      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
      * * * * * * * *  THIS MODULE IS CASE SENSITIVE  * * * * * * * *
      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

       IDENTIFICATION DIVISION.
       PROGRAM-ID.     QUICKREF.

      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
      *   PDFLIB CLIENT: MINI IMPOSITION DEMO                       *
      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

       ENVIRONMENT DIVISION.

       DATA DIVISION.
       WORKING-STORAGE SECTION.


       01  PDFLIB-CONSTANTS.
           05  WIDTH         USAGE COMP-1 VALUE 5.00E+2.
           05  HEIGHT        USAGE COMP-1 VALUE 7.70E+2.
           05  START-PAGE    PIC S9(9) BINARY VALUE 1.
           05  END-PAGE      PIC S9(9) BINARY VALUE 4.
           05  MAX-ROW       PIC S9(9) BINARY VALUE 2.
           05  MAX-COL       PIC S9(9) BINARY VALUE 2.


       01  PDFLIB-CALL-AREA.
           05  P                       PIC S9(9) BINARY.
           05  RC                      PIC S9(9) BINARY.
           05  PDFLIB-RETURN-LONG      PIC S9(9) BINARY.
           05  PDFLIB-RETURN-CHAR      PIC X(64) VALUE SPACES.
           05  PDFLIB-RETURN-FLOAT     COMP-1 VALUE ZEROS.
           05  PDFLIB-ERR-STRING       PIC X(128).

       01  WS-WORK-FIELDS.
           05  WS-INT                  PIC S9(9) BINARY.
           05  WS-INT2                 PIC S9(9) BINARY.
           05  WS-ROW                  PIC S9(9) BINARY.
           05  WS-COL                  PIC S9(9) BINARY.
           05  WS-MANUAL               PIC S9(9) BINARY.
           05  WS-PAGE                 PIC S9(9) BINARY.
           05  WS-PAGENO               PIC S9(9) BINARY.
           05  WS-FONT                 PIC S9(9) BINARY.
           05  WS-FLOAT                COMP-1.
           05  WS-FLOAT1               COMP-1.
           05  WS-FLOAT2               COMP-1.
           05  WS-FLOAT3               COMP-1.
           05  WS-DISP-FLOAT           PIC 9(9).99.
           05  WS-STRING               PIC X(128).
           05  WS-STRING1              PIC X(128).
           05  WS-STRING2              PIC X(128).
           05  WS-STRING3              PIC X(128).
           05  WS-NULL                 PIC X(1) VALUE LOW-VALUES.




       PROCEDURE DIVISION.

      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
      *   CREATE A PDF OBJECT                                       *
      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

           CALL "PDNEW" USING          P,
                                       RC.

      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
      *   OPEN OUTPUT PDF FILE                                      *
      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

           MOVE 0 TO WS-INT.

           STRING 'QUICKREF.PDF' LOW-VALUES
                   DELIMITED BY SIZE INTO WS-STRING.

           CALL "PDBEGDOC" USING       P,
                                       WS-STRING,
                                       WS-INT,
                                       WS-NULL,
                                       PDFLIB-RETURN-LONG,
                                       RC.

           IF PDFLIB-RETURN-LONG = -1
               CALL "PDERRMSG" USING   P,
                                       PDFLIB-ERR-STRING,
                                       RC.
               DISPLAY PDFLIB-ERR-STRING.
               MOVE +8 TO RETURN-CODE
               GOBACK.


      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
      *   SET HYPERTEXT ENCODING FOR JAPANESE SYSTEMS COMPATABILITY *
      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

           STRING 'hypertextencoding' LOW-VALUES
                   DELIMITED BY SIZE INTO WS-STRING.
           STRING 'host' LOW-VALUES
                   DELIMITED BY SIZE INTO WS-STRING2.

           CALL "PDSETPAR" USING       P,
                                       WS-STRING,
                                       WS-STRING2,
                                       RC.

      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
      *   SET SEARCH PATH                                           *
      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
           STRING 'SearchPath' LOW-VALUES
                   DELIMITED BY SIZE INTO WS-STRING.
           STRING "'hlq.PDFLIB.BIND.DATA.PDF" LOW-VALUES
                   DELIMITED BY SIZE INTO WS-STRING2.

           CALL "PDSETPAR" USING       P,
                                       WS-STRING,
                                       WS-STRING2,
                                       RC.


      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
      *   SET PDF INFORMATION                                       *
      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

           STRING 'Creator' LOW-VALUES
                   DELIMITED BY SIZE INTO WS-STRING.
           STRING 'QUICKREF.cbl' LOW-VALUES
                   DELIMITED BY SIZE INTO WS-STRING2.

           CALL "PDSETINF" USING       P,
                                       WS-STRING,
                                       WS-STRING2,
                                       RC.

           STRING 'Author' LOW-VALUES
                   DELIMITED BY SIZE INTO WS-STRING.
           STRING 'Thomas Merz' LOW-VALUES
                   DELIMITED BY SIZE INTO WS-STRING2.

           CALL "PDSETINF" USING       P,
                                       WS-STRING
                                       WS-STRING2,
                                       RC.

           STRING 'Title' LOW-VALUES
                   DELIMITED BY SIZE INTO WS-STRING.
           STRING 'mini imposition demo (COBOL)' LOW-VALUES
                   DELIMITED BY SIZE INTO WS-STRING2.

           CALL "PDSETINF" USING       P,
                                       WS-STRING
                                       WS-STRING2,
                                       RC.


      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
      *   OPEN PDI INPUT FILE                                       *
      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

           STRING "REF" LOW-VALUES
                   DELIMITED BY SIZE INTO WS-STRING.
           MOVE LOW-VALUES TO WS-STRING2.
           MOVE 0 TO WS-INT.


           CALL "PDOPNPDI" USING       P,
                                       WS-STRING,
                                       WS-STRING2,
                                       WS-INT,
                                       PDFLIB-RETURN-LONG,
                                       RC.

           IF PDFLIB-RETURN-LONG = -1
               CALL "PDERRMSG" USING   P,
                                       PDFLIB-ERR-STRING,
                                       RC.
               DISPLAY PDFLIB-ERR-STRING.
               MOVE +8 TO RETURN-CODE
               GOBACK.


           MOVE PDFLIB-RETURN-LONG     TO  WS-MANUAL.




      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
      *   SET 'TOPDOWN' DIRECTIONAL FLAG                            *
      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

           STRING 'topdown' LOW-VALUES
                   DELIMITED BY SIZE INTO WS-STRING.
           STRING 'true' LOW-VALUES
                   DELIMITED BY SIZE INTO WS-STRING2.

           CALL "PDSETPAR" USING       P,
                                       WS-STRING,
                                       WS-STRING2,
                                       RC.


      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
      *   LOOP FROM START THROUGH END PAGES                         *
      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

           MOVE 0 TO WS-ROW.
           MOVE 0 TO WS-COL.

           PERFORM VARYING WS-PAGENO FROM START-PAGE BY 1
                           UNTIL WS-PAGENO > END-PAGE


           IF WS-ROW = 0 AND WS-COL = 0 THEN

               CALL "PDBGNPAG" USING       P,
                                           WIDTH,
                                           HEIGHT,
                                           WS-NULL,
                                           RC

               STRING 'Helvetica-Bold' LOW-VALUES
                       DELIMITED BY SIZE INTO WS-STRING
               STRING 'host' LOW-VALUES
                       DELIMITED BY SIZE INTO WS-STRING2
               MOVE 0 TO WS-INT


               CALL "PDLODFNT" USING       P,
                                           WS-STRING
                                           WS-INT,
                                           WS-STRING2,
                                           WS-NULL,
                                           PDFLIB-RETURN-LONG,
                                           RC

               MOVE PDFLIB-RETURN-LONG     TO  WS-FONT


               MOVE 18 TO WS-FLOAT

               CALL "PDSETFNT" USING       P,
                                           WS-FONT,
                                           WS-FLOAT,
                                           RC

               MOVE 24 TO WS-FLOAT
               MOVE 24 TO WS-FLOAT2

               CALL "PDSETTP" USING        P,
                                           WS-FLOAT,
                                           WS-FLOAT2,
                                           RC


               STRING 'PDFlib Quick Reference' LOW-VALUES
                       DELIMITED BY SIZE INTO WS-STRING

               CALL "PDSHOW" USING         P,
                                           WS-STRING,
                                           RC


           END-IF


      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
      *   OPEN NEXT PAGE OF INPUT DOCUMENT                          *
      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

           CALL "PDOPNPAG" USING       P,
                                       WS-MANUAL,
                                       WS-PAGENO
                                       WS-NULL
                                       PDFLIB-RETURN-LONG,
                                       RC

           IF PDFLIB-RETURN-LONG = -1
               CALL "PDERRMSG" USING   P,
                                       PDFLIB-ERR-STRING,
                                       RC.
               DISPLAY PDFLIB-ERR-STRING.
               MOVE +8 TO RETURN-CODE
               GOBACK.


           MOVE PDFLIB-RETURN-LONG     TO  WS-PAGE


      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
      *   CALCULATE & FIT IT N-UP                                   *
      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

           COMPUTE WS-FLOAT = 1 / MAX-ROW
           MOVE WS-FLOAT TO WS-DISP-FLOAT
           STRING 'scale' SPACE WS-DISP-FLOAT LOW-VALUES
                   DELIMITED BY SIZE INTO WS-STRING

           COMPUTE WS-FLOAT1 = WIDTH / MAX-COL * WS-COL
           COMPUTE WS-FLOAT2 = (WS-ROW + 1) * HEIGHT / MAX-ROW


           CALL "PDFITPDI" USING       P,
                                       WS-PAGE,
                                       WS-FLOAT1,
                                       WS-FLOAT2,
                                       WS-STRING,
                                       RC

           COMPUTE WS-COL = WS-COL + 1
           IF WS-COL = MAX-COL THEN
              MOVE 0 TO WS-COL
              COMPUTE WS-ROW = WS-ROW + 1
           END-IF

           IF WS-ROW = MAX-ROW THEN
              MOVE 0 TO WS-ROW
              CALL "PDENDPAG" USING       P,
                                          RC
           END-IF


      * NOW GO DO THE NEXT PAGE
           END-PERFORM.



      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
      *   FINISH THE LAST PARTIAL PAGE                              *
      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

           IF WS-ROW > 0 OR WS-COL > 0 THEN
              CALL "PDENDPAG" USING       P,
                                          WS-NULL,
                                          RC.




      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
      *   CLOSE EVERYTHING DOWN                                     *
      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

           CALL "PDENDDOC" USING       P,
                                       WS-NULL,
                                       RC.

           CALL "PDCLSPDI" USING       P,
                                       WS-MANUAL,
                                       RC.


      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
      *   DELETE THE PDF OBJECT                                     *
      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

           CALL "PDDELETE" USING       P,
                                       RC.

      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
      *   END THE PROGRAM                                           *
      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

           MOVE ZERO                   TO RETURN-CODE.
           GOBACK.

       END PROGRAM QUICKREF.

