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. *************************************************************** * GENERATE THE SYMBOL * *************************************************************** 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 "PDFINITF" USING FONT-CHAR-SET. CALL "PDFENCOD" USING PDF417-PARAMETER-INFO-REC, PDF417-OUTPUT-REC, IN-DATA. IF PDF-OK PERFORM 5000-PRINT-SYMBOL ELSE DISPLAY "ENCODER FAILED. " " ERROR CODE = " RESULT-CODE STOP RUN. 4000-ENCODE-SYMBOL-EXIT. EXIT. *************************************************************** * HERE IS WHERE WE MOVE THE ENCODER'S OUTPUT TO THE DDS * *************************************************************** 5000-PRINT-SYMBOL. MOVE "COBOL/400 PROGRAM USING PDF INTERFACE PROGRAMS" 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. * ***************************************************************