[an error occurred while processing this directive]

HP OpenVMS Systems Documentation

Content starts here

HP COBOL
Reference Manual


Previous Contents Index

  • With COUNT phrase:


        DISPLAY "Enter two dates in a row: " NO ADVANCING.
        ACCEPT INMESSAGE.
        MOVE 1 TO PTR.
        PERFORM DISPLAY-TWO 2 TIMES.
        GO TO DISPLAYED-TWO.
    DISPLAY-TWO.
        MOVE SPACES TO THEDATE.
        MOVE 0 TO FIELD-COUNT MONTH-COUNT DAY-COUNT YEAR-COUNT.
        UNSTRING INMESSAGE
          DELIMITED BY "-" OR "/" OR ALL " "
          INTO THEMONTH DELIMITER IN HOLD-DELIM COUNT MONTH-COUNT
               THEDAY DELIMITER IN HOLD-DELIM COUNT DAY-COUNT
               THEYEAR DELIMITER IN HOLD-DELIM COUNT YEAR-COUNT
            WITH POINTER PTR
            TALLYING IN FIELD-COUNT.
        INSPECT THEDATE REPLACING ALL " " BY "0".
        DISPLAY THEDATE "   " PTR "   " FIELD-COUNT
           " : " MONTH-COUNT "-" DAY-COUNT "-" YEAR-COUNT.
    DISPLAYED-TWO.
            EXIT.
    

    Results


    Enter two dates in a row: 6/13/87 8/15/87
    870613   09   03 : 01-02-02
    870815   21   03 : 01-02-02
    Enter two dates in a row: 10 15 87-1 1 88
    871015   10   03 : 02-02-02
    880101   21   03 : 01-01-02
    Enter two dates in a row: 6/13/87-12/31/87
    870613   09   03 : 01-02-02
    871231   21   03 : 02-02-02
    Enter two dates in a row: 6/13/87-12/31
    870613   09   03 : 01-02-02
    001231   21   02 : 02-02-00
    Enter two dates in a row: 6/13/87/12/31/87
    870613   09   03 : 01-02-02
    871231   21   03 : 02-02-02
    

    6.8.42 USE

    Function

    The USE statement specifies Declarative USE procedures to handle input/output exceptions and errors. It can also specify procedures to be executed before the program processes a specific report group.


    file-name

    is the name of a file connector described in a file description entry in a Data Division. It cannot refer to a sort or merge file.

    group-data-name

    is the name of a report group in a report group description entry in a Data Division. It must not appear in more than one USE statement.

    Syntax Rules

    All Formats

    1. A USE statement can be used only in a sentence immediately after a section header in the Procedure Division declaratives area. It must be the only statement in the sentence. The rest of the section can contain zero, one, or more paragraphs to define the USE procedures.
    2. The USE statement itself does not execute. It defines the conditions that cause execution of the USE procedure.

    Format 1

    1. The ERROR and EXCEPTION syntax are equivalent and interchangeable.

    Format 2

    1. Of the four Report Writer Procedure Division verbs (SUPPRESS, GENERATE, INITIATE, or TERMINATE), only the SUPPRESS statement can appear in a USE BEFORE REPORTING procedure. A PERFORM statement in a USE BEFORE REPORTING procedure must not have GENERATE, INITIATE, or TERMINATE statements in its range.
      The USE procedure must not alter the value of any control data item.

    General Rules

    All Formats

    1. At run time, two special precedence rules apply for the selection of a USE procedure when a program is contained within another program. In applying these rules, only the first qualifying USE procedure is selected for execution. The order of precedence for the selection of a USE procedure is as follows:
      • First, select the applicable USE procedure within the program containing the statement that caused the qualifying condition.
      • If a USE procedure is not found in the program using the previous rule, the Run-Time System searches all programs directly or indirectly containing that program for a USE GLOBAL procedure. This search continues until the Run-Time System either: (a) finds an applicable USE GLOBAL procedure, or (b) finds the outermost containing program, if there is no applicable USE GLOBAL procedure. Either condition terminates the search.
    2. A Declarative USE procedure cannot refer to a non-Declarative procedure. However, only the PERFORM statement can transfer execution control from:
      • A Declarative USE procedure to another Declarative USE procedure
      • A non-Declarative procedure to a Declarative USE procedure
    3. After a USE procedure executes, control returns to the next executable statement in the invoking routine, if one is defined. Otherwise, control transfers according to the rules for Explicit and Implicit Transfers of Control.
    4. A program must not execute a statement in a USE procedure that would cause execution of a USE procedure that had been previously executed and had not yet returned control to the routine that invoked it.

    Format 1

    1. A USE procedure executes automatically:
      • After the system's input-output exception processing completes
      • When an invalid key or at end condition results from an input-output statement that has no INVALID KEY or AT END clause
    2. If there is an applicable USE AFTER EXCEPTION procedure, it executes whenever an input or output condition occurs that would result in a nonzero value in the first character of a FILE STATUS data item. However, it does not execute if: (a) the condition is invalid key and there is an INVALID KEY phrase, or (b) the condition is at end, and there is an AT END phrase.
    3. One input-output exception cannot cause more than one USE AFTER EXCEPTION procedure to execute.
    4. More than one USE AFTER EXCEPTION procedure can relate to an input-output operation when there is one procedure for file-name and another for the applicable open mode. In this case, only the procedure for file-name executes. This rule applies only to USE procedures in the same program.
    5. If no applicable USE procedures are found in the local program, then containing programs are searched upwards for: (a) USE GLOBAL procedures for the file, and then (b) for USE GLOBAL procedures for the input-output type.
    6. A USE AFTER EXCEPTION procedure specifying an open mode applies to an input-output operation only when all of the following are true:
      • The open mode (INPUT, OUTPUT, I-O, or EXTEND) specified in the USE AFTER EXCEPTION procedure is identical to the open mode in effect (that is, the open mode established by the OPEN statement).
      • The file is open or in the process of being opened.
      • There is no file-name declarative procedure for that file within the same program.
    7. If an input-output error occurs for a file that is not open or not in the process of being opened, the only applicable USE procedure is a file-name USE procedure.

    Format 2

    1. The Report Writer Control System (RWCS) executes the USE BEFORE REPORTING procedure before it processes the named group-data-name report group. Only during the processing of the report group does the RWCS change prior values, execute control breaks, adjust LINE-COUNTER and PAGE-COUNTER, and present the report group.

    Additional References

    Example


    ***************************************************************
    *  This example assumes that SELECT and FD statements exist
    *  for FILE1-SEQ, FILE1-RAN, FILE1-DYN and FILE1-EXT.
    *  All three USE procedures are local to the program
    *  that hosts this fragment.
    *  At run-time if there is an exception on opening FILE1-RAN
    *  or FILE1-DYN, FILE1-ERR section can be invoked.
    *  If there is an exception on opening FILE1-SEQ, INPUT-ERR
    *  section can be invoked. Since there is no USE procedure
    *  declared for the EXTEND mode or for FILE1-EXT,
    *  an exception on opening that file will cause an abnormal
    *  termination of the program. Also, since FILE1-SEQ in the
    *  fragment is not opened for OUTPUT mode, the OUTPUT-ERR USE
    *  procedure is not eligible to be invoked here.
    ***********************************************************
    
    PROCEDURE DIVISION.
    DECLARATIVES.
    INPUT-ERR SECTION.
     USE AFTER STANDARD ERROR PROCEDURE ON INPUT.
    INP-1.
     DISPLAY "INVOKED USE PROCEDURE FOR INPUT".
    OUTPUT-ERR SECTION.
     USE AFTER STANDARD ERROR PROCEDURE ON OUTPUT.
    OUT-1.
     DISPLAY "INVOKED USE PROCEDURE FOR OUTPUT".
    FILE1-ERR SECTION.
     USE AFTER STANDARD ERROR PROCEDURE ON FILE1-RAN, FILE1-DYN.
    FILE1-1.
     DISPLAY "INVOKED USE PROCEDURE FOR FILES".
    
    END DECLARATIVES.
    MAIN-PROGRAM SECTION.
    P0. DISPLAY "***ENTERED USE TEST PROGRAM FRAGMENT***".
    
     OPEN INPUT FILE1-SEQ.
    
     OPEN OUTPUT FILE1-RAN.
    
     OPEN I-O FILE1-DYN.
    
     OPEN EXTEND FILE1-EXT.
    
     ...
    
    


    Previous Next Contents Index