Apache config. # Configuration originally created by Create HTTP Server wizard on Wed Dec 12 07:39:42 CST 2018 Listen *:8081 DocumentRoot /www/cgitest/htdocs TraceEnable Off Options +ExecCGI -FollowSymLinks -Includes LogFormat "%h %T %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%{Cookie}n \"%r\" %t" cookie LogFormat "%{User-agent}i" agent LogFormat "%{Referer}i -> %U" referer LogFormat "%h %l %u %t \"%r\" %>s %b" common CustomLog logs/access_log combined LogMaint logs/access_log 7 0 LogMaint logs/error_log 7 0 SetEnvIf "User-Agent" "Mozilla/2" nokeepalive SetEnvIf "User-Agent" "JDK/1\.0" force-response-1.0 SetEnvIf "User-Agent" "Java/1\.0" force-response-1.0 SetEnvIf "User-Agent" "RealPlayer 4\.0" force-response-1.0 SetEnvIf "User-Agent" "MSIE 4\.0b2;" nokeepalive SetEnvIf "User-Agent" "MSIE 4\.0b2;" force-response-1.0 CgiConvMode %%EBCDIC/EBCDIC%% ScriptAlias /cgi-bin/erros /QSYS.LIB/E310PRDOBJ.LIB/E310H00000.PGM ScriptAliasMatch ^/cgi-bin/(.*) /QSYS.LIB/E310PRDOBJ.LIB/$1 <Directory /> Require all denied </Directory> <Directory /www/cgitest/htdocs> Require all granted </Directory> <Directory /QSYS.LIB/E310PRDOBJ.LIB> SetEnv QIBM_CGI_LIBRARY_LIST "E310PRDOBJ" AuthName "Password Required" AuthType Basic PasswdFile %%SYSTEM%% UserID %%CLIENT%% Require valid-user Options +ExecCGI SetHandler cgi-script SetEnv QIBM_CGI_LIBRARY_LIST "E310PRDOBJ" AuthName "Password Required" AuthType Basic PasswdFile %%SYSTEM%% UserID %%CLIENT%% Require valid-user Options +ExecCGI SetHandler cgi-script Order allow,deny Allow from all </Directory> Initial CGI program. **Free Ctl-opt Dftactgrp(*NO) Actgrp('CGI'); Dcl-Pr E31RPP ExtPgm('E31RPP'); *N Char(5) Const; End-Pr; E31RPP('*INIT'); Return; Second CGI program. **Free Ctl-opt Dftactgrp(*NO) Actgrp('CGI') Bnddir('E310PRDOBJ/CGIBND'); // Needs QTCP/QTMHCGI added during compile. I put it in the CGIBND binding directory. // *ENTRY Dcl-Pr E31RPP ExtPgm; *N Char(5); End-Pr; Dcl-Pi *N; Init Char(5); End-Pi; Dcl-Pr WriteStdOut Extproc('QtmhWrStout'); *N Char(2048) Const Options(*VarSize); // Buffer *N Int(10) Const; // Buffer Length *N LikeDs(Qusec) Options(*VarSize); // Error End-Pr; Dcl-S Buffer VarChar(2048); Dcl-S Count Int(10); Dcl-S Handle Char(15); Dcl-C LineFeed Const(x'0D25'); Dcl-Ds Qusec; BytesProvided Int(10) Inz(%Size(Qusec)); ByteAvailable Int(10); ErrorId Char(7); Filler Char(1); MessageData Char(500); End-Ds; If %Parms() = 1; // Called from E310H00000 Handle = '081895345701239'; Count = 0; EndIf; Count += 1; Buffer = 'Accept-HTSession:' + Handle + LineFeed; WriteStdOut(Buffer:%Len(Buffer):Qusec); Buffer = 'Content-type: text/html' + LineFeed + LineFeed; WriteStdOut(Buffer:%Len(Buffer):Qusec); Buffer = '<html><head><title>CGI Example</title></head>' + LineFeed; WriteStdOut(Buffer:%Len(Buffer):Qusec); Buffer = '<body><br><br>Current Count is - ' + %Char(Count) + LineFeed; WriteStdOut(Buffer:%Len(Buffer):Qusec); Buffer = '<br><br><form name="cgiform" method="post" action="/cgi-bin/E31RPP.pgm/' + Handle + '">' + LineFeed; WriteStdOut(Buffer:%Len(Buffer):Qusec); Buffer = '<input type="submit" value="Again"></form>' + LineFeed; WriteStdOut(Buffer:%Len(Buffer):Qusec); Buffer = '</body></html>' + LineFeed; WriteStdOut(Buffer:%Len(Buffer):Qusec); Return;