什么是控制中断?

时间:2017-03-31 18:47:37

标签: cobol mainframe

我没有得到什么是控制中断以及它的使用方式和位置?下面是控制中断的程序,但我不明白控制中断在这个程序中是如何工作的?

IDENTIFICATION DIVISION.
   PROGRAM-ID. ASS13.

   ENVIRONMENT DIVISION.
   INPUT-OUTPUT SECTION.
   FILE-CONTROL.
       SELECT IN12 ASSIGN TO DISK
       ORGANIZATION IS LINE SEQUENTIAL.
       SELECT OUT12 ASSIGN TO DISK
       ORGANIZATION IS LINE SEQUENTIAL.

   DATA DIVISION.
   FD IN12
      LABEL RECORDS ARE STANDARD
      VALUE OF FILE-ID IS "IN12.TXT".
   01 IN12-REC.
      05 DAY-IN PIC X.
      05 SP-NO-IN PIC X(3).
      05 AMT-IN PIC 9(5)V99.
   FD OUT12
      LABEL RECORDS ARE STANDARD
      VALUE OF FILE-ID IS "OUT12.TXT".
   01 OUTREC PIC X(80).

   WORKING-STORAGE SECTION.
   01 H1.
      05 STAR PIC X(80) VALUE ALL '*'.
   01 H2.
      05 DEPT PIC X(4) VALUE "DAY".
      05 FILLER PIC X(1).
      05 AMT PIC X(12) VALUE "TOTAL SALES".
   01 H3.
      05 SP1 PIC X(80) VALUE ALL SPACES.
   01 TOTAL-REC.
      05 DAY-OUT PIC X(3).
      05 FILLER PIC X(3).
      05 TOTAL-OUT PIC $Z(7).99.
   77 A-T-M-REC PIC XXX VALUE 'YES'.
   77 FIRST-REC PIC XXX VALUE 'YES'.
   77 WS-DAY-HOLD PIC X.
   77 WS-TOTAL PIC 9(7)V99 VALUE 0.

   PROCEDURE DIVISION.
   MAIN-PARA.
       OPEN INPUT IN12
            OUTPUT OUT12
            WRITE OUTREC FROM H1
            WRITE OUTREC FROM H2
            WRITE OUTREC FROM H1
            WRITE OUTREC FROM H3

            PERFORM UNTIL A-T-M-REC = 'NO'
             READ IN12
                  AT END
                     MOVE 'NO' TO A-T-M-REC
                  NOT AT END
                     PERFORM PARA-1                 
             END-READ
            END-PERFORM
            PERFORM PARA-CTRBREAK

       CLOSE IN12
             OUT12
       STOP RUN.
   MAIN-PARA.
   PARA-1.
       IF FIRST-REC = 'YES'
          MOVE DAY-IN TO WS-DAY-HOLD
          MOVE 'NO' TO FIRST-REC
       END-IF.
       IF DAY-IN NOT = WS-DAY-HOLD
          PERFORM PARA-CTRBREAK
       END-IF. 

       EVALUATE DAY-IN
         WHEN 1
               MOVE "MON" TO DAY-OUT
         WHEN 2
               MOVE "TUE" TO DAY-OUT
         WHEN 3
               MOVE "WED" TO DAY-OUT
         WHEN 4
               MOVE "THU" TO DAY-OUT
         WHEN 5
               MOVE "FRI" TO DAY-OUT
       END-EVALUATE.

       COMPUTE WS-TOTAL =  WS-TOTAL + AMT-IN.

   PARA-CTRBREAK.
       MOVE WS-TOTAL TO TOTAL-OUT
       WRITE OUTREC FROM TOTAL-REC
       MOVE 0 TO WS-TOTAL                    
       MOVE 'YES' TO FIRST-REC
       WRITE OUTREC FROM H3.'

0 个答案:

没有答案