Upcoming eventsCOBOL
Do you use COBOL?
|
sandboxHELLO.COB IDENTIFICATION DIVISION. *>AUTHOR. Joseph James Frantz, Seth Keiper. PROGRAM-ID. somecms. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT webinput assign to KEYBOARD. SELECT TemplateFile ASSIGN TO 'somecms/templates/base.html' ORGANIZATION IS LINE SEQUENTIAL. SELECT UserContentFile ASSIGN TO WORKING-FILENAME ORGANIZATION IS LINE SEQUENTIAL. DATA DIVISION. FILE SECTION. FD webinput. 01 postchunk pic x(1024). FD TemplateFile. 01 TemplateRecord. 88 TemplateFile-EOF VALUE HIGH-VALUES. 10 TemplateLine PIC X(500). FD UserContentFile. 01 UserContentRecord. 88 UserContentFile-EOF VALUE HIGH-VALUES. 10 UserContentLine PIC X(500). WORKING-STORAGE SECTION. 01 WORKING-FILENAME PIC X(500). 01 RESULT PIC S9(9). 01 TEST-VALUES. 10 htmlTEMPLATE PIC X(64000) VALUE SPACES. 10 htmlUSERCONTENT PIC X(64000) VALUE SPACES. 01 COUNTER PIC 99999 VALUE ZEROES. 01 NEWLINE CONSTANT x"0a". 78 name-count value 23. 01 name-index pic 99 usage comp-5. 01 value-string pic x(256). 01 ampersand pic x(5) value '&'. 01 source-lot pic x(5) value '&'. 01 target-lot pic x(5) value '&'. 01 this-n-that pic x(1024) value 'this&that'. 01 string-text pic x(1024) value ' '. 01 string-text1 pic x(1024) value ' '. 01 string-text2 pic x(1024) value ' '. 01 string-text3 pic x(1024) value ' '. 01 string-text4 pic x(1024) value ' '. 01 environment-names. 02 name-strings. 03 filler pic x(200) value 'QUERY_STRING'. 03 filler pic x(200) value 'DOCUMENT_ROOT'. 03 filler pic x(200) value 'GATEWAY_INTERFACE'. 03 filler pic x(200) value 'HTTP_ACCEPT'. 03 filler pic x(200) value 'HTTP_ACCEPT_CHARSET'. 03 filler pic x(200) value 'HTTP_ACCEPT_ENCODING'. 03 filler pic x(200) value 'HTTP_ACCEPT_LANGUAGE'. 03 filler pic x(200) value 'HTTP_CONNECTION'. 03 filler pic x(200) value 'HTTP_COOKIE'. 03 filler pic x(200) value 'HTTP_HOST'. 03 filler pic x(200) value 'HTTP_USER_AGENT'. *> 03 filler pic x(200) value 'LIB_PATH'. *> 03 filler pic x(200) value 'PATH'. 03 filler pic x(200) value 'REMOTE_ADDR'. 03 filler pic x(200) value 'REMOTE_PORT'. 03 filler pic x(200) value 'REQUEST_METHOD'. 03 filler pic x(200) value 'REQUEST_URI'. *> 03 filler pic x(200) value 'SCRIPT_FILENAME'. 03 filler pic x(200) value 'SCRIPT_NAME'. 03 filler pic x(200) value 'SERVER_ADDR'. 03 filler pic x(200) value 'SERVER_ADMIN'. 03 filler pic x(200) value 'SERVER_NAME'. 03 filler pic x(200) value 'SERVER_PORT'. 03 filler pic x(200) value 'SERVER_PROTOCOL'. 03 filler pic x(200) value 'SERVER_SIGNATURE'. 03 filler pic x(200) value 'SERVER_SOFTWARE'. 02 filler redefines name-strings. 03 name-string pic x(200) occurs name-count times. 01 query-q pic x(1024) value ' '. 01 query-s pic x(1024) value ' '. 01 query-r pic x(1024) value ' '. 01 query-t pic x(1024) value ' '. 01 query-v pic x(1024) value ' '. 01 query-w pic x(1024) value ' '. 01 query-hold-q pic x(1024) value ' '. 01 query-hold-s pic x(1024) value ' '. 01 query-hold-r pic x(1024) value ' '. 01 query-hold-t pic x(1024) value ' '. 01 query-hold-v pic x(1024) value ' '. 01 query-hold-w pic x(1024) value ' '. 01 query-text-q pic x(1024) value ' '. 01 query-text-s pic x(1024) value ' '. 01 query-text-r pic x(1024) value ' '. 01 query-text-t pic x(1024) value ' '. 01 query-text-v pic x(1024) value ' '. 01 query-text-w pic x(1024) value ' '. 01 query. 10 filler pic x(200) value 'q'. 10 filler pic x(200) value 's'. 10 filler pic x(200) value 'r'. 10 filler pic x(200) value 't'. 10 filler pic x(200) value 'v'. 10 filler pic x(200) value 'w'. PROCEDURE DIVISION. PERFORM VARYING name-index FROM 1 BY 1 UNTIL name-index > name-count ACCEPT value-string FROM environment name-string(name-index) END-ACCEPT IF (name-string(name-index) = "QUERY_STRING") THEN UNSTRING value-string DELIMITED BY "&" INTO query-q, query-s, query-r, query-t, query-v, query-w END-UNSTRING END-IF END-PERFORM UNSTRING query-q DELIMITED BY "=" INTO query-hold-q, query-text-q END-UNSTRING OPEN INPUT TemplateFile READ TemplateFile AT END SET TemplateFile-EOF TO TRUE END-READ PERFORM UNTIL TemplateFile-EOF STRING FUNCTION TRIM(htmlTEMPLATE) DELIMITED BY SIZE FUNCTION TRIM(TemplateLine) DELIMITED BY SIZE NEWLINE INTO htmlTEMPLATE READ TemplateFile AT END SET TemplateFile-EOF TO TRUE END-READ END-PERFORM CLOSE TemplateFile *> Find an easier method than this! EVALUATE query-text-q WHEN "build" MOVE "/usr/bin/rst2html --no-doc-title " & "--initial-header-level=3 " & "--template=somecms/templates/template.txt " & "somecms/rst/build.rst " & "somecms/usercontent/build.html" TO string-text CALL "SYSTEM" USING string-text RETURNING result MOVE 'somecms/usercontent/build.html' TO WORKING-FILENAME OPEN INPUT UserContentFile READ UserContentFile AT END SET UserContentFile-EOF TO TRUE END-READ PERFORM UNTIL UserContentFile-EOF STRING FUNCTION TRIM(htmlUSERCONTENT) DELIMITED BY SIZE FUNCTION TRIM(UserContentLine) DELIMITED BY SIZE NEWLINE INTO htmlUSERCONTENT READ UserContentFile AT END SET UserContentFile-EOF TO TRUE END-READ END-PERFORM CLOSE UserContentFile WHEN "welcome" MOVE "/usr/bin/rst2html --no-doc-title " & "--initial-header-level=3 " & "--template=somecms/templates/template.txt " & "somecms/rst/welcome.rst " & "somecms/usercontent/welcome.html" TO string-text CALL "SYSTEM" USING string-text RETURNING result MOVE 'somecms/usercontent/welcome.html' TO WORKING-FILENAME OPEN INPUT UserContentFile READ UserContentFile AT END SET UserContentFile-EOF TO TRUE END-READ PERFORM UNTIL UserContentFile-EOF STRING FUNCTION TRIM(htmlUSERCONTENT) DELIMITED BY SIZE FUNCTION TRIM(UserContentLine) DELIMITED BY SIZE NEWLINE INTO htmlUSERCONTENT READ UserContentFile AT END SET UserContentFile-EOF TO TRUE END-READ END-PERFORM CLOSE UserContentFile WHEN OTHER MOVE 'home' TO query-text-q MOVE "/usr/bin/rst2html --no-doc-title " & "--initial-header-level=3 " & "--template=somecms/templates/template.txt " & "somecms/rst/home.rst " & "somecms/usercontent/home.html" TO string-text CALL "SYSTEM" USING string-text RETURNING result MOVE 'somecms/usercontent/home.html' TO WORKING-FILENAME OPEN INPUT UserContentFile READ UserContentFile AT END SET UserContentFile-EOF TO TRUE END-READ PERFORM UNTIL UserContentFile-EOF STRING FUNCTION TRIM(htmlUSERCONTENT) DELIMITED BY SIZE FUNCTION TRIM(UserContentLine) DELIMITED BY SIZE NEWLINE INTO htmlUSERCONTENT READ UserContentFile AT END SET UserContentFile-EOF TO TRUE END-READ END-PERFORM CLOSE UserContentFile END-EVALUATE DISPLAY 'Content-type: text/html' NEWLINE END-DISPLAY DISPLAY FUNCTION SUBSTITUTE ( FUNCTION SUBSTITUTE ( htmlTEMPLATE, '{TITLE}', FUNCTION TRIM( FUNCTION UPPER-CASE( FUNCTION SUBSTITUTE(query-text-q,'_',' ') ) ) ), '{CONTENT}', htmlUSERCONTENT ) END-DISPLAY GOBACK .
|
Login |