ILE COBOL Programmer's Guide

Sample Code for the Multithreading Example

The example has three code samples:

THRCBL QCBLLESRC
An ILE COBOL main procedure that creates the ILE COBOL threads, waits for them to finish, then exits.

SUBA QCBLLESRC
An ILE COBOL procedure that is called by the thread created by THRCBL.

SUBB QCBLLESRC
A second ILE COBOL procedure that is called by the thread created by THRCBL.

The sample code for THRCBL QCBLLESRC is shown in Figure 87.

Figure 87. Source code for THRCBL QCBLLESRC



PROCESS NOMONOPRC OPTIONS THREAD(SERIALIZE).
IDENTIFICATION DIVISION.
PROGRAM-ID. THRCBL.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
special-names. system-console is oper1.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 pthread_attr_t typedef.
05 FILLER PIC 9(8) usage binary occurs 4 times.
05 FILLER USAGE POINTER.
01 pthread_t typedef.
05 FILLER USAGE POINTER.
05 FILLER PIC 9(8) usage binary.
05 FILLER PIC 9(8) usage binary.
05 FILLER PIC 9(8) usage binary.
05 FILLER PIC 9(8) usage binary.
05 FILLER USAGE POINTER.
01 PROC-SUBA-PTR USAGE PROCEDURE-POINTER.
01 PROC-SUBB-PTR USAGE PROCEDURE-POINTER.
01 attr type pthread_attr_t.
01 rc PIC 9(8) usage binary value 0.
01 group1.
05 thread type pthread_t occurs 10 times.
01 joinStatus0 USAGE POINTER.
01 joinStatus1 USAGE POINTER.
PROCEDURE DIVISION.
TEST1-INIT.
SET PROC-SUBA-PTR TO ENTRY PROCEDURE "SUBA".
SET PROC-SUBB-PTR TO ENTRY PROCEDURE "SUBB".

* Create a thread attributes object
call procedure "pthread_attr_init" using attr
returning rc.

* Define threads to be joinable
call procedure "pthread_attr_setdetachstate" using attr
by value 0 size 4
returning rc.

* Start creating thread(s)
call procedure "pthread_create" using thread(1) attr
by value PROC-SUBA-PTR omitted
returning rc.
call procedure "pthread_create" using thread(2) attr
by value PROC-SUBB-PTR omitted
returning rc.
* Start joining thread(s)
call procedure "pthread_join" using by value thread(1)
by reference joinStatus0
returning rc.
call procedure "pthread_join" using by value thread(2)
by reference joinStatus1
returning rc.

* Destroy thread attributes object
call procedure "pthread_attr_destroy" using attr
returning rc.

The sample code for SUBA QCBLLESRC is shown in Figure 88.

Figure 88. Source code for SUBA QCBLLESRC


       PROCESS NOMONOPRC OPTIONS THREAD(SERIALIZE).
       IDENTIFICATION DIVISION.
       PROGRAM-ID. SUBA.
       ENVIRONMENT DIVISION.
       CONFIGURATION SECTION.
         special-names.  system-console is oper1.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 one-line pic x(11).
       PROCEDURE DIVISION.
       TEST1-INIT.
           move "IN SUBA" TO ONE-LINE.
           DISPLAY one-line UPON oper1.

The sample code for SUBB QCBLLESRC is shown in Figure 89

Figure 89. Source code for SUBB QCBLLESRC


       PROCESS NOMONOPRC OPTIONS THREAD(SERIALIZE).
       IDENTIFICATION DIVISION.
       PROGRAM-ID. SUBB.
       ENVIRONMENT DIVISION.
       CONFIGURATION SECTION.
         special-names.  system-console is oper1.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 one-line pic x(11).
       PROCEDURE DIVISION.
       TEST1-INIT.
           move "IN SUBB" TO ONE-LINE.
           DISPLAY one-line UPON oper1.


[ Top of Page | Previous Page | Next Page | Table of Contents | Index ]