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

       IDENTIFICATION DIVISION.
       PROGRAM-ID.     IMAGE.

      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
      *   PDFLIB CLIENT: IMAGE EXAMPLE IN COBOL                     *
      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

       ENVIRONMENT DIVISION.

       DATA DIVISION.
       WORKING-STORAGE SECTION.


       01  PDFLIB-PAGE-SIZE-CONSTANTS.
           05  PDFLIB-A4-WIDTH         USAGE COMP-1 VALUE 5.95E+2.
           05  PDFLIB-A4-HEIGHT        USAGE COMP-1 VALUE 8.42E+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-IMAGE                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-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 PDF FILE                                             *
      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

           MOVE 0 TO WS-INT.

           STRING 'IMAGE.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 SEARCH PATH                                           *
      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
           STRING 'SearchPath' LOW-VALUES
                   DELIMITED BY SIZE INTO WS-STRING.
           STRING "'hlq.PDFLIB.BIND.DATA.JPG" 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 'Image.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 'image sample (COBOL)' LOW-VALUES
                   DELIMITED BY SIZE INTO WS-STRING2.

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

      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
      *   IMAGE PROCESSING                                          *
      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

           STRING 'auto' LOW-VALUES
                   DELIMITED BY SIZE INTO WS-STRING.
           STRING 'NESRIN' LOW-VALUES
                   DELIMITED BY SIZE INTO WS-STRING2.
           MOVE 0 TO WS-INT.


           CALL "PDLDIMG" USING        P,
                                       WS-STRING,
                                       WS-STRING2,
                                       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.

           MOVE PDFLIB-RETURN-LONG     TO  WS-IMAGE.


      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
      *   GENERATE PAGE WITH DUMMY DIMENSIONS AND PLACE IMAGE       *
      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
           MOVE 10 TO WS-FLOAT1.
           MOVE 10 TO WS-FLOAT2.


           CALL "PDBGNPAG" USING       P,
                                       WS-FLOAT1,
                                       WS-FLOAT2,
                                       WS-NULL,
                                       RC.


      * NOW FIT THE IMAGE (WHICH ADJUSTS THE PAGE SIZE AUTOMATICALLY)

           MOVE 0 TO WS-FLOAT1.
           MOVE 0 TO WS-FLOAT2.
           STRING 'adjustpage' LOW-VALUES
                   DELIMITED BY SIZE INTO WS-STRING.



           CALL "PDFITIMG" USING       P,
                                       WS-IMAGE,
                                       WS-FLOAT1,
                                       WS-FLOAT2,
                                       WS-STRING,
                                       RC.


      * AND CLOSE IT...

           CALL "PDCLSIMG" USING       P,
                                       Ws-IMAGE,
                                       RC.



      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
      *   END THE PAGE                                              *
      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

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

      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
      *   CLOSE THE PDF DOCUMENT                                    *
      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

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

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

           CALL "PDDELETE" USING       P,
                                       RC.

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

           MOVE ZERO                   TO RETURN-CODE.
           GOBACK.

       END PROGRAM IMAGE.

