IDENTIFICATION DIVISION. PROGRAM-ID. CBLPDF. AUTHOR. Steve Kearns DATE-WRITTEN. 01/05/99. ******************************************************* ENVIRONMENT DIVISION. ******************************************************* CONFIGURATION SECTION. SOURCE-COMPUTER. AS-400. OBJECT-COMPUTER. AS-400. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT OUTFILE ASSIGN TO FORMATFILE-PDF417 FILE STATUS IS FILE-STATUS-OUT. ******************************************************* DATA DIVISION. ******************************************************* FILE SECTION. FD OUTFILE. 01 OUTRECORD. COPY DDS-ALL-FORMATS-O OF PDF417. WORKING-STORAGE SECTION. 01 WORK-FIELDS. 05 FILE-STATUS-OUT PIC X(2). 01 INDATA-01. 03 FILLER PIC X(40) VALUE "THIS IS A TEST OF THE SILVER BAY SOFTWAR". 03 FILLER PIC X(40) VALUE "E, LLC. PDF417 ENCODER. THE ERROR CORRE". 03 FILLER PIC X(40) VALUE "CTION WILL ENCODE AT LEVEL 3 WITH ECC PA". 03 FILLER PIC X(06) VALUE "DDING.". 01 INDATA-LEN PIC 9(04) VALUE 128. 01 PDF417-INPUT-REC. 05 IN-DATA PIC X(2700) VALUE SPACES. 01 IDX1 PIC 9(4) VALUE ZERO. 01 FONT-CHAR-SET PIC X(16) VALUE " ABCDEFGHIJKLMNO". ******************************************************* * Here's where we pull in the copy lib. Note we * declare the output lines as level 05 immediately * following. We don't make the output lineS * a part of the actual copy lib as it's up to the * programmer to decide what size they need the * output buffer to be. ******************************************************* COPY PDFCOPYLIB. 05 OUTPUT-LINES. 10 OUTPUT-LINE-01 PIC X(37). 10 OUTPUT-LINE-02 PIC X(37). 10 OUTPUT-LINE-03 PIC X(37). 10 OUTPUT-LINE-04 PIC X(37). 10 OUTPUT-LINE-05 PIC X(37). 10 OUTPUT-LINE-06 PIC X(37). 10 OUTPUT-LINE-07 PIC X(37). 10 OUTPUT-LINE-08 PIC X(37). 10 OUTPUT-LINE-09 PIC X(37). 10 OUTPUT-LINE-10 PIC X(37). 10 OUTPUT-LINE-11 PIC X(37). 10 OUTPUT-LINE-12 PIC X(37). 10 OUTPUT-LINE-13 PIC X(37). 10 OUTPUT-LINE-14 PIC X(37). 10 OUTPUT-LINE-15 PIC X(37). 10 OUTPUT-LINE-16 PIC X(37). 10 OUTPUT-LINE-17 PIC X(37). 10 OUTPUT-LINE-18 PIC X(37). 10 OUTPUT-LINE-19 PIC X(37). 10 OUTPUT-LINE-20 PIC X(37). 10 OUTPUT-LINE-21 PIC X(37). 10 OUTPUT-LINE-22 PIC X(37). 10 OUTPUT-LINE-23 PIC X(37). 10 OUTPUT-LINE-24 PIC X(37). 10 OUTPUT-LINE-25 PIC X(37). *************************************************************** PROCEDURE DIVISION. *************************************************************** *************************************************************** * Main driver routine * *************************************************************** 0000-MAIN. PERFORM 1000-INIT. PERFORM 2000-PROCESS-DATA. PERFORM 9000-CLEAN-UP. STOP RUN. *************************************************************** * This section opens the output file. * *************************************************************** 1000-INIT. ******************************************************* * VERY IMPORTANT: tell the encoder the size of the * output lines we've declared above! ******************************************************* MOVE 37 TO PRINT-SYMBOL-WIDTH MOVE 25 TO PRINT-SYMBOL-HEIGHT SET H-ALIGN-CENTERED TO TRUE SET V-ALIGN-CENTERED TO TRUE OPEN OUTPUT OUTFILE IF FILE-STATUS-OUT NOT EQUAL "00" DISPLAY "Unable to open output file. File status = " FILE-STATUS-OUT STOP RUN. *************************************************************** * This section formats input data, creates a call to sub- * * routines and creates an output file which includes a * * PDF417 symbol and a result code from each call * *************************************************************** 2000-PROCESS-DATA. PERFORM 3000-INIT-INDATA THROUGH 3000-INIT-INDATA-EXIT. PERFORM 4000-ENCODE-SYMBOL. 2000-PROCESS-DATA-EXIT. EXIT. *************************************************************** * Read the data from input fields and init the PDF417 input * * data record for encoding. * *************************************************************** 3000-INIT-INDATA. MOVE 0 TO IDX1. MOVE INDATA-01 TO IN-DATA(IDX1 + 1 : INDATA-LEN). ADD INDATA-LEN TO IDX1. ADD INDATA-LEN TO NUM-BYTES-TO-ENCODE. 3000-INIT-INDATA-EXIT. EXIT. *************************************************************** * Call the PDF417 Encoder. * *************************************************************** 4000-ENCODE-SYMBOL. MOVE 0 TO RESULT-CODE. CALL LINKAGE TYPE IS PROCEDURE "PDFINITF" USING BY REFERENCE FONT-CHAR-SET. CALL LINKAGE TYPE IS PROCEDURE "PDFENCOD" USING BY REFERENCE PDF417-PARAMETER-INFO-REC, BY REFERENCE PDF417-OUTPUT-REC, BY REFERENCE IN-DATA. IF PDF-OK PERFORM 5000-PRINT-SYMBOL ELSE DISPLAY "Encoder FAILED. " " Error code = " RESULT-CODE STOP RUN. 4000-ENCODE-SYMBOL-EXIT. EXIT. *************************************************************** * Generate the output; the 3-90 lines of characters from the * * encoder * *************************************************************** 5000-PRINT-SYMBOL. MOVE "COBOL/ILE PROGRAM USING PDFV2SRV SERVICE PROGRAM" TO TITLE-DDS. WRITE OUTRECORD FORMAT IS "HEADING". MOVE OUTPUT-LINES TO PDFOUT-O. WRITE OUTRECORD FORMAT IS "PDFOUT". *************************************************************** * Close files. * *************************************************************** 9000-CLEAN-UP. CLOSE OUTFILE. IF FILE-STATUS-OUT NOT EQUAL "00" DISPLAY "Unable to close output file. File status = " FILE-STATUS-OUT STOP RUN. *************************************************************** * End of program. * ***************************************************************