This is Tikiwiki v2.2 -Arcturus- © 2002–2008 by the Tiki community 2010/09/07 20:54 PDT

Menu [toggle]

Upcoming events

COBOL

Do you use COBOL?
OpenCOBOL 1.0
OpenCOBOL 1.1
OpenCOBOL Other
Other COBOL
Not Yet

View Results
(Votes: 112)
Print

sandbox

HELLO.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
       .




Created by: btiffin. Last Modification: Tuesday September 08, 2009 11:42:30 PDT by aoirthoir.