Menu

COBOL - Output Procedure


Para selecionar, editar ou alterar registros classificados antes de gravá-los do arquivo de trabalho de classificação em outro arquivo, use a frase OUTPUT PROCEDURE da instrução SORT.

Cada procedimento de saída deve estar contido em uma seção ou em um parágrafo. Um procedimento de saída deve incluir ambos os seguintes elementos:
  • Pelo menos uma instrução RETURN ou uma instrução RETURN com a frase INTO

  • Quaisquer declarações necessárias para processar os registros que são disponibilizados, um de cada vez, pela declaração RETURN
A instrução RETURN disponibiliza cada registro classificado para o procedimento de saída. (A instrução RETURN para um arquivo de classificação é semelhante a uma instrução READ para um arquivo de entrada.)

Você pode usar as frases AT END e END-RETURN com a instrução RETURN. As instruções imperativas na frase AT END são executadas após todos os registros terem sido retornados do arquivo de classificação. O terminador de escopo explícito END-RETURN delimita o escopo da instrução RETURN.

Se você usar RETURN INTO em vez de RETURN, os registros serão retornados para WORKING-STORAGE, LOCAL-STORAGE ou para uma área de saída.
Exemplo:

O exemplo a seguir mostra uma técnica de codificação que garante que a instrução RETURN encontre a condição AT END antes que o programa termine de ser executado. A instrução RETURN, codificada com a frase AT END, é executada até que ocorra a condição AT END.

IDENTIFICATION DIVISION.
DATA DIVISION.
FILE SECTION.
SD  OUR-FILE.
01  OUR-SORT-REC.
    03  SORT-KEY                PIC X(10).
    03  FILLER                  PIC X(70).
. . .
WORKING-STORAGE SECTION.
01  WS-SORT-REC                 PIC X(80).
01  END-OF-SORT-FILE-INDICATOR  PIC X VALUE 'N'.
    88  NO-MORE-SORT-RECORDS          VALUE 'Y'.
. . .
PROCEDURE DIVISION.
A-CONTROL SECTION.
    SORT OUR-FILE ON ASCENDING KEY SORT-KEY
      INPUT PROCEDURE IS B-INPUT
      OUTPUT PROCEDURE IS C-OUTPUT.
    . . .
B-INPUT SECTION.
    MOVE . . .. . .. TO WS-SORT-REC.
    RELEASE OUR-SORT-REC FROM WS-SORT-REC.
    . . .
C-OUTPUT SECTION.
    DISPLAY 'STARTING READS OF SORTED RECORDS: '.
    RETURN OUR-FILE
      AT END
        SET NO-MORE-SORT-RECORDS TO TRUE.
    PERFORM WITH TEST BEFORE UNTIL NO-MORE-SORT-RECORDS
      IF SORT-RETURN = 0 THEN
        DISPLAY 'OUR-SORT-REC = ' OUR-SORT-REC
        RETURN OUR-FILE
          AT END
            SET NO-MORE-SORT-RECORDS TO TRUE
      END-IF
    END-PERFORM.