#!proteus -z
; NULL input and output nulli; read with STDREAD, write to CONSOLE
; PRNFORM
;
; Program for Proteus
;
; (C) 1998-2004 Simone Zanella Productions
;
; CGI script sample: receive a form and returns an HTML page with field values.
; Under Ms-Dos, the data sent are saved to a temporary file, because we need
; to know the exact size of returned data.
!ifdef MS_DOS
FUNCTION InitHTML()
_P_F = TEMPNAME()
_P_H = FOPEN(_P_F, 28)
RETURN
FUNCTION PrintHTML(s)
FWRITE(_P_H, s)
RETURN
FUNCTION CloseHTML()
CONSOLELN "Content-type: text/html"
CONSOLELN "Content-length: " FSIZE(_P_H)
CONSOLELN ""
FSEEK(_P_H, 0, 0)
REPEAT
s = FREAD(_P_H, 1024)
CONSOLE s
UNTIL FEOF(_P_H)
FCLOSE(_P_H)
FREMOVE(_P_F)
RETURN
!else
FUNCTION InitHTML()
CONSOLELN "Content-type: text/html"
CONSOLELN ""
RETURN
FUNCTION PrintHTML(S)
CONSOLE S
RETURN
FUNCTION CloseHTML()
RETURN
!endif
CONST SIGNATURE = "PRNForm 1.0"
CONST TITLE = "Form results"
QUERY = ""
REPEAT
QUERY = QUERY STDREAD(1024)
UNTIL STDEOF()
A = URLDECODE(QUERY)
InitHTML()
PrintHTML("<html><head><title>" TITLE "</title></head><body><h1>" \
TITLE "</h1><table border=\"3\" cellpadding=\"3\" width=\"100%\">" \
CEOL)
AVLTRAVERSE(A, PrintForm)
FUNCTION PrintForm(field, value)
PrintHTML("<tr><td><strong>" field "</strong></td><td><cite>" value \
"</cite></td></tr>" _CEOL)
RETURN 0
PrintHTML("</table><br><br><strong>Converted by <cite>" SIGNATURE \
"</cite></strong></body></html>" CEOL)
CloseHTML()
ABORT 0