(* ************************************** *) (* PASCAL GET REQUEST MEHTOD CGI PROGRAM *) (* *) (* Author: Matthew William Coan *) (* Date: Sat Apr 23 16:24:03 EST 2011 *) (* ************************************** *) program PascalCGI; type TString = string(256); PChar = ^Char; var QueryString : TString; RequestMethod : TString; function GetEnv(EnvVar : CString) : PChar; C; function strstr(s1 : CString; s2 : CString) : CString; C; function strchr(s1 : CString; s2 : Char) : CString; C; function strcmp(s1 : CString; s2 : CString) : Integer; C; function strcpy(s1 : CString; s2 : CString) : Integer; C; function strtok(s1 : CString; s2 : CString) : CString; C; function strlen(s1 : CString) : Integer ; C; function StrPas(Src : CString): TString; var S : TString; begin S := ''; if Src <> NIL then begin while((Src^ <> chr(0)) AND (length(S) < S.capacity)) do begin S := S + Src^; inc(Word(Src)); end; end; StrPas := S; end; procedure SayHello; var ptr : CString; name : TString; i : Integer; begin ptr := strstr(QueryString, 'name='); ptr := strstr(ptr, '='); name := StrPas(ptr); Delete(name,1,1); for i := 1 to Length(name) do begin if name[i] = '+' then begin name[i] := ' '; end; end; WriteLn(''); WriteLn(''); WriteLn(''); WriteLn('Hello, '); WriteLn(StrPas(name)); WriteLn(''); WriteLn(''); WriteLn(''); WriteLn('

Hello, '); WriteLn(StrPas(name)); WriteLn('


'); WriteLn('
'); WriteLn('
'); WriteLn('Please enter your name:
'); WriteLn(' *
'); WriteLn('
'); WriteLn(''); WriteLn(''); end; procedure WriteContentType; begin Write('Content-type: text/html'); Write(Char(13)); Write(Char(10)); Write(Char(13)); Write(Char(10)); end; procedure DecodeFormData; begin QueryString := StrPas(GetEnv('QUERY_STRING')); RequestMethod := StrPas(GetEnv('REQUEST_METHOD')); end; begin WriteContentType; DecodeFormData; SayHello; end.