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
[...]