Using List & Label with COBOL

Klicke hier für den deutschen Artikel.

Foreword

The following samples are not ready to compile or run. The function calls to open / close a List & Label job, error handling and much more is missing. The samples are only for informational purpose, they should just show how to integrate List & Label into a COBOL application.

The used List & Label constants have to be defined in COBOL syntax. The easiest way is to transfer them from the C/C++ header file “cmbtLL??.h” (?? indicates the List & Label version number) to COBOL. The header file can be found in the Visual C++ subdirectory of the List & Label installation and can be opened with any text editor.

A sample for a C++ definition of a constant:

   #define LL_PROJECT_LABEL (1)

This has to be translated to COBOL syntax. For instance:

   78 LL-PROJECT-LABEL value 1.

There might exist a tool in the COBOL development environment that could do this job automatically (it might be called “H2CPY”).

Invoking the Designer

  *********************************************************************************
  *    This COBOL Sample starts the Designer of List & Label.
  *    Two fields will be defined: 'Itemnumber' and 'Description'
  *    
  *    Copyright (c) combit GmbH
  *********************************************************************************
  [...]

       MOVE "LLDEMO.LBL" & X"00" TO PROJECTNAME
       MOVE LL-PROJECT-LABEL TO PROJECTTYPE
       MOVE "Label Designer" & X"00" TO WINDOWTITLE

  * Define 'Itemnumber' and 'Description' and povide dummy date
       MOVE "Itemnumber" TO VARIABLE-NAME
       MOVE "SampleItemnumber" TO VARIABLE-CONTENTS
       CALL WINAPI "LlDefineVariableA"
                  USING BY VALUE JOB-HANDLE
                        BY REFERENCE VARIABLE-NAME
                        BY REFERENCE VARIABLE-CONTENTS
                  RETURNING RC-INT
       END-CALL
       MOVE "Description" TO VARIABLE-NAME
       MOVE "SampleDescription" TO VARIABLE-CONTENTS
       CALL WINAPI "LlDefineVariableA"
                  USING BY VALUE JOB-HANDLE
                        BY REFERENCE VARIABLE-NAME
                        BY REFERENCE VARIABLE-CONTENTS
                  RETURNING RC-INT
       END-CALL

  * Start Designer
       CALL WINAPI "LlDefineLayoutA"
            USING BY VALUE JOB-HANDLE
                  BY VALUE WINDOW-HANDLE
                  BY REFERENCE WINDOWTITLE
                  BY VALUE PROJECTTYPE
                  BY REFERENCE PROJECTNAME
            RETURNING RC-INT
         END-CALL

  [...]

Printing a Label

  *********************************************************************************
  *    This COBOL sample prints 1 Label using List & Label. For demon-
  *    stration purposes data is being fetched from an array MYDATA
  *    (normally a record set access would happen there).
  *
  *    Copyright (c) combit GmbH
  *********************************************************************************
  [...]

  * Start preview print process of label "LLDEMO.LBL":
       MOVE "LLDEMO.LBL" & X"00" TO PROJECTNAME
       MOVE LL-PRINT-PREVIEW TO PRINTOPTIONS
       MOVE LL-PROJECT-LABEL TO PROJECTTYPE
       MOVE LL-BOXTYPE-BRIDGEMETER TO BOXTYPE
       MOVE "Label Printing" & X"00" TO WINDOWTITLE

       CALL WINAPI "LlPrintWithBoxStartA"
            USING BY VALUE JOB-HANDLE
                  BY VALUE PROJECTTYPE
                  BY REFERENCE PROJECTNAME
                  BY VALUE PRINTOPTIONS
                  BY VALUE BOXTYPE
                  BY VALUE WINDOW-HANDLE
                  BY REFERENCE WINDOWTITLE
            RETURNING RC-INT
       END-CALL

  * Define all variables of the record to be printed (in this case Itemnumber + Description):
  * fetch data from data source (in this case for demonstration the contents of array MYDATA)
       MOVE "Itemnumber" TO VARIABLE-NAME
       MOVE MYDATA (1) TO VARIABLE-CONTENTS
       CALL WINAPI "LlDefineVariableA"
                  USING BY VALUE JOB-HANDLE
                        BY REFERENCE VARIABLE-NAME
                        BY REFERENCE VARIABLE-CONTENTS
                  RETURNING RC-INT
       END-CALL
       MOVE "Description" TO VARIABLE-NAME
       MOVE MYDATA (2) TO VARIABLE-CONTENTS
       CALL WINAPI "LlDefineVariableA"
                  USING BY VALUE JOB-HANDLE
                        BY REFERENCE VARIABLE-NAME
                        BY REFERENCE VARIABLE-CONTENTS
                  RETURNING RC-INT
       END-CALL

 * Print label
       CALL WINAPI "LlPrint"
            USING BY VALUE JOB-HANDLE
            RETURNING RC-INT
       END-CALL

 * Finish print process
       MOVE 0 TO PAGES
       CALL WINAPI "LlPrintEnd"
            USING BY VALUE JOB-HANDLE
                  BY VALUE PAGES
            RETURNING RC-INT
       END-CALL

  * Show preview
       MOVE "." & X"00" TO PATH.
       CALL WINAPI "LlPreviewDisplayA"
            USING BY VALUE JOB-HANDLE
                  BY REFERENCE PROJECTNAME
                  BY REFERENCE PATH
                  BY VALUE WINDOW-HANDLE
            RETURNING RC-INT
         END-CALL

  [...]