Example 2: COBOLLOCK and COBOLUNLOCK [ HP COBOL II/XL Migration Guide ] MPE/iX 5.0 Documentation
HP COBOL II/XL Migration Guide
Example 2: COBOLLOCK and COBOLUNLOCK
The following example uses the COBOLLOCK and COBOLUNLOCK procedures which
are only available in compatibility mode on HP 3000 Series 900 computers:
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT UPDATE-FILE
ASSIGN TO "DATAFL1"
FILE STATUS IS CHK-UPD-FILE.
DATA DIVISION.
FILE SECTION.
FD UPDATE-FILE.
01 DATA-LINE PIC X(80).
WORKING-STORAGE SECTION.
01 CHK-UPD-FILE PIC XX.
01 COND-CODEU PIC S9(4) COMP.
01 LOCK-CONDU PIC S9(4) COMP VALUE 0.
PROCEDURE DIVISION.
CALL "COBOLLOCK" USING UPDATE-FILE LOCK-CONDU COND-CODEU.
IF COND-CODEU = 0 THEN
PERFORM UPDATE-THE-FILE
ELSE
PERFORM LOCK-ERROR.
.
.
.
CALL "COBOLUNLOCK" USING UPDATE-FILE COND-CODEU.
IF COND-CODEU NOT = 0 THEN
PERFORM UNLOCK-ERROR.
To migrate this program, change the calls from COBOLLOCK and COBOLUNLOCK
to EXCLUSIVE and UN-EXCLUSIVE, respectively. If LOCK-CONDU is zero, use
the CONDITIONALLY option of the EXCLUSIVE verb; if it is one, do not use
the CONDITIONALLY option. Also change the program so that it checks the
file's status code instead of the condition code COND-CODEU.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT UPDATE-FILE
ASSIGN TO "DATAFL1"
FILE STATUS IS CHK-UPD-FILE.
DATA DIVISION.
FILE SECTION.
FD UPDATE-FILE.
01 DATA-LINE PIC X(80).
WORKING-STORAGE SECTION.
01 CHK-UPD-FILE PIC XX.
01 LOCK-CONDU PIC S9(4) COMP VALUE 0.
PROCEDURE DIVISION.
.
.
MOVE 1 TO LOCK-CONDU.
.
.
IF LOCK-CONDU EQUALS ZERO
EXCLUSIVE UPDATE-FILE CONDITIONALLY
ELSE
IF LOCK-CONDU EQUALS 1
EXCLUSIVE UPDATE-FILE.
IF CHK-UPD-FILE = "00" THEN
PERFORM UPDATE-THE-FILE
ELSE
PERFORM LOCK-ERROR
END-IF.
.
.
.
UN-EXCLUSIVE UPDATE-FILE.
IF CHK-UPD-FILE <> "00" THEN
PERFORM UNLOCK-ERROR.
MPE/iX 5.0 Documentation