The example has three code samples:
The sample code for THRCBL QCBLLESRC is shown in Figure 87.
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.
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
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.(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.