Um terminador de escopo termina um verbo ou instrução. Os terminadores de escopo podem ser explícitos ou implícitos.
Terminadores de escopo explícitos:
Terminadores de escopo explícitos terminam um verbo sem terminar uma frase. Eles consistem em END seguido por um hífen e o nome do verbo que está sendo terminado, como END-IF.
Listados abaixo alguns dos importantes terminadores de escopo explícito.
END-ADD END-PERFORM END-ACCEPT END-CALL END-COMPUTE END-DELETE END-DISPLAY END-DIVIDE END-EVALUATE END-IF END-MULTIPLY END-READ END-RETURN END-REWRITE END-SEARCH END-START END-STRING END-SUBTRACT END-UNSTRING END-WRITE |
Terminador de escopo implícito:
Um terminador de escopo implícito é um ponto (.) que encerra o escopo de todas as instruções anteriores ainda não encerradas.
Exemplo:
Vamos ver o exemplo abaixo com terminadores de escopo implícito e explícito.
Terminador de escopo implícito:
IF ITEM = "A" DISPLAY "THE VALUE OF ITEM IS " ITEM ADD 1 TO TOTAL MOVE "C" TO ITEM DISPLAY "THE VALUE OF ITEM IS NOW " ITEM. ---> IF statement end here IF ITEM = "B" ADD 2 TO TOTAL. ---> IF statement end here |
Terminador de escopo explícito:
IF ITEM = "A" DISPLAY "THE VALUE OF ITEM IS " ITEM ADD 1 TO TOTAL MOVE "C" TO ITEM DISPLAY "THE VALUE OF ITEM IS NOW " ITEM END-IF ---> IF statement end here IF ITEM = "B" ADD 2 TO TOTAL END-IF ---> IF statement end here |
Para maior clareza do programa e para evitar finalizações não intencionais de instruções, use terminadores de escopo explícitos, especialmente dentro de parágrafos. Use terminadores de escopo implícitos apenas no final de um parágrafo ou no final de um programa.
Pontas:
Tenha cuidado ao codificar um terminador de escopo explícito para uma instrução imperativa aninhada em uma instrução condicional. Certifique-se de que o terminador de escopo esteja emparelhado com a instrução para a qual foi destinado. No exemplo a seguir, o terminador de escopo será emparelhado com a segunda instrução READ, embora o programador pretenda que seja emparelhado com a primeira.
READ FILE1 AT END MOVE A TO B READ FILE2 END-READ |
Para garantir que o terminador de escopo explícito esteja emparelhado com a instrução pretendida, o exemplo anterior pode ser recodificado dessa maneira.
READ FILE1 AT END MOVE A TO B READ FILE2 END-READ END-READ |