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

       IDENTIFICATION DIVISION.
       PROGRAM-ID.     HELLO.

      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
      *   PDFLIB CLIENT: HELLO 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-ERR-STRING       PIC X(128).

       01  WS-WORK-FIELDS.
           05  WS-INT                  PIC S9(9) BINARY.
           05  WS-FONT                 PIC S9(9) BINARY.
           05  WS-FLOAT                COMP-1.
           05  WS-FLOAT2               COMP-1.
           05  WS-STRING               PIC X(128).
           05  WS-STRING2              PIC X(128).
           05  WS-NULL                 PIC X(1) VALUE LOW-VALUES.

       PROCEDURE DIVISION.

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

           CALL "PDNEW" USING          P,
                                       RC.

      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
      *   OPEN NEW PDF DOCUMENT                                     *
      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

           MOVE 0 TO WS-INT.

           STRING Z'HELLO.PDF'
                   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 Z'hypertextencoding'
                   DELIMITED BY SIZE INTO WS-STRING.
           STRING Z'host'
                   DELIMITED BY SIZE INTO WS-STRING2.

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

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

           STRING Z'Creator'
                   DELIMITED BY SIZE INTO WS-STRING.
           STRING Z'Hello.cbl'
                   DELIMITED BY SIZE INTO WS-STRING2.

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

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

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

           STRING Z'Title'
                   DELIMITED BY SIZE INTO WS-STRING.
           STRING Z'Hello, world (COBOL)!'
                   DELIMITED BY SIZE INTO WS-STRING2.

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

      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
      *   BEGIN A NEW PAGE                                          *
      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

           CALL "PDBEGPAG" USING       P,
                                       PDFLIB-A4-WIDTH,
                                       PDFLIB-A4-HEIGHT,
                                       WS-NULL,
                                       RC.

      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
      *   LOAD & SET THE CURRENT FONT                               *
      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

           MOVE 0 TO WS-INT.

           STRING Z'Helvetica-Bold'
                   DELIMITED BY SIZE INTO WS-STRING.
           STRING Z'host'
                   DELIMITED BY SIZE INTO WS-STRING2.


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

           MOVE PDFLIB-RETURN-LONG     TO  WS-FONT.


           MOVE 24 TO WS-FLOAT.

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

      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
      *   WRITE TO THE CURRENT PAGE OF THE PDF DOCUMENT             *
      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

           MOVE 50 TO WS-FLOAT.
           MOVE 700 TO WS-FLOAT2.

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


           STRING Z'Hello, World!'
                   DELIMITED BY SIZE INTO WS-STRING.

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


           STRING Z'(says COBOL)'
                   DELIMITED BY SIZE INTO WS-STRING.

           CALL "PDCONT" USING         P,
                                       WS-STRING,
                                       RC.

      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
      *   END THIS PAGE                                             *
      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

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

      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
      *   END 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 HELLO.

