HP 3000 Manuals

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