'===========================================================================
' Subject: HOW TO WRITE CGI PROGRAMS          Date: 09-23-99 (08:21)       
'  Author: Quinn Tyler Jackson                Code: PBDLL                  
'  Origin: qjackson@wave.home.com           Packet: PBDLL.ABC
'===========================================================================
'   PbCgi.bas
'
'   This demonstrates how to write a CGI program with PowerBASIC/DLL 6.0.
'
'   Written by Quinn Tyler Jackson
'   email:  quinn@qtj.net
'   url:    http://www.qtj.net/~quinn/
'

#COMPILE EXE "PBCGI.EXE"
#INCLUDE "win32api.inc"

OPTION EXPLICIT

FUNCTION Html_Document(Doc AS STRING) AS STRING
    FUNCTION = "<html>" + Doc + "</html>"
END FUNCTION

FUNCTION Html_Title(Title AS STRING) AS STRING
    FUNCTION = "<title>" + Title + "</title>"
END FUNCTION

FUNCTION Html_Body(Body AS STRING) AS STRING
    FUNCTION = "<body>" + Body + "</body>"
END FUNCTION

FUNCTION Html_Header(Level AS INTEGER, Header AS STRING) AS STRING
    DIM L AS STRING
    L = LTRIM$(STR$(Level))

    FUNCTION = "<h" + L + ">" + Header + "</h" + L + ">"
END FUNCTION

FUNCTION Html_Line(theText AS STRING) AS STRING
    FUNCTION = theText + "<br>"
END FUNCTION

FUNCTION Html_Center(theText AS STRING) AS STRING
    FUNCTION = "<center>" + theText + "</center>"
END FUNCTION

FUNCTION Html_Link(theText AS STRING, theLink AS STRING) AS STRING
     FUNCTION = "<a href='" + theLink + "'>" + theText + "</a>"
END FUNCTION


FUNCTION CGI_SendResponse(Response AS STRING) AS INTEGER
    DIM i AS INTEGER

    DIM psz AS DWORD
    psz = STRPTR(Response)
    DIM dwLen AS LONG
    dwLen = LEN(Response)

    WriteFile GetStdHandle(%STD_OUTPUT_HANDLE), BYVAL psz, dwLen, dwLen, BYVAL %NULL
END FUNCTION


FUNCTION PBMAIN

    CGI_SendResponse _
    Html_Document(_
        Html_Title("Power/CGI Demo") +_
        Html_Body(_
            Html_Center(Html_Header(1, "This CGI Page was created with <i>PB/DLL 6.0</i>")) + _
            Html_Center(Html_Header(2, "Host: " + ENVIRON$("REMOTE_HOST"))) + _
            Html_Center(Html_Link("All the more reason to consider PB/DLL...", _
                "http://www.powerbasic.com")_
            )_
        )_
    )

END FUNCTION
