|
Putting your COPYLIB on the Web $CONTROL USLINIT IDENTIFICATION DIVISION. PROGRAM-ID. CL2HTML. * *********************************************** * This program will read a COBOL copylib file * and generate a byte stream HTML file that is * self indexed. *********************************************** * AUTHOR. Shawn M. Gordon. INSTALLATION. SMGA. DATE-WRITTEN. TUE, NOV 23, 1999. DATE-COMPILED. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. HP-3000. OBJECT-COMPUTER. HP-3000. SPECIAL-NAMES. CONDITION-CODE IS CC. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT INFILE ASSIGN TO DUMMY USING WS-COPYLIB. SELECT TEMPFILE ASSIGN TO "ZMHF83,,,,1000000". DATA DIVISION. FILE SECTION. FD INFILE RECORD CONTAINS 86 CHARACTERS. 01 INFILE-RECORD. 03 IR-COBOL-CODE PIC X(72). 03 IR-COPY-NAME PIC X(08). 03 PIC X(06). FD TEMPFILE RECORD CONTAINS 100 CHARACTERS. 01 TEMPFILE-RECORD PIC X(100). WORKING-STORAGE SECTION. 01 S1 PIC S9(4) COMP VALUE 0. 01 WS-COPYLIB PIC X(26) VALUE SPACES. 01 DEST-FILE PIC X(254) VALUE SPACES. 01 SAVE-NAME PIC X(08) VALUE SPACES. 01 ERR PIC S9(4) COMP VALUE 0. 01 ERR-LEN PIC S9(4) COMP VALUE 0. 01 ERR-MSG PIC X(78) VALUE SPACES. 01 DATE-BUFF PIC X(27) VALUE SPACES. 01 INDEX-TABLE. 03 IT-FORMAT-INDEX OCCURS 1000. 05 ITFI-ANCHOR PIC X(100). 01 HPFOPEN-PARMS. 03 HP-CONST-0 PIC S9(9) COMP SYNC VALUE 0. 03 HP-CONST-1 PIC S9(9) COMP SYNC VALUE 1. 03 HP-CONST-2 PIC S9(9) COMP SYNC VALUE 2. 03 HP-CONST-4 PIC S9(9) COMP SYNC VALUE 4. 03 HP-CONST-9 PIC S9(9) COMP SYNC VALUE 9. 03 HP-FILE-NAME PIC X(256) VALUE SPACES. 03 HP-FNUM-D PIC S9(9) COMP SYNC. 03 HP-FNUM-D-REDEF REDEFINES HP-FNUM-D. 05 PIC X(02). 05 HP-FNUM PIC S9(4) COMP. 03 HP-STATUS PIC S9(9) COMP SYNC. PROCEDURE DIVISION. A1000-INIT. DISPLAY 'Begin run of CL2HTML @ ' TIME-OF-DAY. DISPLAY 'Enter COPYLIB file name to process: ' NO ADVANCING. ACCEPT WS-COPYLIB FREE. IF WS-COPYLIB = SPACES DISPLAY 'Early termination of CL2HTML @ ' TIME-OF-DAY STOP RUN. DISPLAY 'Enter output file name: ' NO ADVANCING. ACCEPT DEST-FILE FREE. IF DEST-FILE = SPACES DISPLAY 'Early termination of CL2HTML @ ' TIME-OF-DAY STOP RUN. OPEN INPUT INFILE OUTPUT TEMPFILE. * Need to have a delimiter at beginning and end of file name INSPECT DEST-FILE TALLYING S1 FOR CHARACTERS BEFORE ' '. MOVE '%' TO HP-FILE-NAME(1:1). MOVE DEST-FILE(1:S1) TO HP-FILE-NAME(2:). MOVE '%' TO HP-FILE-NAME(S1 + 2:1). * Now use HPFOPEN on the destination file. CALL INTRINSIC "HPFOPEN" USING HP-FNUM-D, HP-STATUS, 2, HP-FILE-NAME, 3, HP-CONST-4, 5, HP-CONST-0, 6, HP-CONST-9, 7, HP-CONST-0, 11, HP-CONST-1, 13, HP-CONST-1, 19, HP-CONST-1, 41, HP-CONST-2, 50, HP-CONST-1, 53, HP-CONST-1, 0. IF HP-STATUS <> 0 DISPLAY 'Error in HPFOPEN ' HP-STATUS STOP RUN. * Create our standard html headers into our dump table. * In the following section "[" and "]" substitute for "<" and ">" * to display correctly in this article's Web display CALL INTRINSIC 'DATELINE' USING DATE-BUFF. MOVE SPACES TO INDEX-TABLE. STRING "[HTML][HEAD][TITLE]" DELIMITED BY SIZE WS-COPYLIB DELIMITED BY SPACES "[/TITLE][/HEAD]" DELIMITED BY SIZE INTO ITFI-ANCHOR(1). STRING "[CENTER][H3]" DELIMITED BY SIZE WS-COPYLIB DELIMITED BY SPACES " Generated on " DATE-BUFF "[/H3][/CENTER]" DELIMITED BY SIZE INTO ITFI-ANCHOR(2). STRING "[P][H4][CENTER]CL2HTML Copylib to HTML convertor, " "copyright 1999, " DELIMITED BY SIZE INTO ITFI-ANCHOR(3) STRING "S.M.Gordon & Associates" "[/CENTER][/H4][P][BR][UL]" DELIMITED BY SIZE INTO ITFI-ANCHOR(4) MOVE 4 TO S1. MOVE "[PRE]" TO TEMPFILE-RECORD. WRITE TEMPFILE-RECORD. A1000-EXIT. EXIT. A1100-READ. READ INFILE AT END MOVE "[/PRE]" TO TEMPFILE-RECORD WRITE TEMPFILE-RECORD GO TO B1000-INDEX. IF IR-COPY-NAME <> SAVE-NAME MOVE IR-COPY-NAME TO SAVE-NAME ADD 1 TO S1 * write the html anchor tag in the body of the document. MOVE SPACES TO TEMPFILE-RECORD STRING '[P][A NAME="' DELIMITED BY SIZE IR-COPY-NAME DELIMITED BY SPACES '"][/A][FONT SIZE="5"][B][CENTER]' DELIMITED BY SIZE IR-COPY-NAME DELIMITED BY SPACES '[/CENTER][/B][/FONT]' DELIMITED BY SIZE INTO TEMPFILE-RECORD WRITE TEMPFILE-RECORD * Create the header html in our table for later dump to file. STRING '[LI][A HREF="#' DELIMITED BY SIZE IR-COPY-NAME DELIMITED BY SPACES '"]' DELIMITED BY SIZE IR-COPY-NAME DELIMITED BY SPACES '[/A]' DELIMITED BY SIZE INTO ITFI-ANCHOR(S1). MOVE SPACES TO TEMPFILE-RECORD. IF IR-COBOL-CODE(1:6) IS NUMERIC STRING "[BR]" IR-COBOL-CODE(7:) DELIMITED BY SIZE INTO TEMPFILE-RECORD ELSE STRING "[BR]" IR-COBOL-CODE DELIMITED BY SIZE INTO TEMPFILE-RECORD. WRITE TEMPFILE-RECORD. GO TO A1100-READ. A1100-EXIT. EXIT. * B1000-INDEX. CLOSE TEMPFILE. OPEN INPUT TEMPFILE. ADD 1 TO S1. MOVE "[/UL][PRE][BR]" TO ITFI-ANCHOR(S1). PERFORM VARYING S1 FROM 1 BY 1 UNTIL ITFI-ANCHOR(S1) = SPACES CALL INTRINSIC "FWRITE" USING HP-FNUM, ITFI-ANCHOR(S1), -80, 0 IF CC <> 0 CALL INTRINSIC 'FCHECK' USING HP-FNUM, ERR CALL INTRINSIC 'FERRMSG' USING ERR, ERR-MSG, ERR-LEN DISPLAY ERR-MSG STOP RUN END-IF END-PERFORM. B1000-READ. READ TEMPFILE AT END GO TO C9000-EOJ. CALL INTRINSIC "FWRITE" USING HP-FNUM, TEMPFILE-RECORD, -80, 0. IF CC <> 0 CALL INTRINSIC 'FCHECK' USING HP-FNUM, ERR CALL INTRINSIC 'FERRMSG' USING ERR, ERR-MSG, ERR-LEN DISPLAY ERR-MSG GO TO C9000-EOJ. GO TO B1000-READ. B1000-EXIT. EXIT. * C9000-EOJ. CLOSE INFILE TEMPFILE. CALL INTRINSIC "FCLOSE" USING HP-FNUM, %1, 0. DISPLAY 'Normal termination of CL2HTML @ ' TIME-OF-DAY. STOP RUN.
Copyright The 3000 NewsWire. All rights reserved.
|