NEM 2); END;END;/****************************************************************/SELECT; WHEN(FIXO = 1 & CARAC = A) DO; PUTSKIP(CONDICAO 1 SATISFEITA); END; WHEN(FIXO = 2 & CARAC = B) DO; PUTSKIP(CONDICAO 2 SATISFEITA); END; OTERWISE DO; PUTSKIP (NENHUMA CONDICAO FOI SATISFEITA); END;END;8.4. Tratamento de ExcecoesVarias situacoes que podem ocorrer em um programa PL/I saoautomaticamente tratadas pelo sistema operacional, seja via hardware, seja viasoftware. No entanto, pode ser necessario fazer um tratamento mais apurado detais condicoes, chamadas condicoes deexcecao ou de interrupcao.O comando On permitira que o programa intercepte e trateerros deste tipo. Sua sintaxe e:ON Onde a condicao e a causa do erro e acao e o comando ouconjunto de comandos que serao executados quando tal condicao acontecer.Quando mais de um comando for executado, o bloco deinstrucoes devera estar delimitado por BEGIN e END;As condicoes se dividem nos seguintes tipos:1) condicoes computacionais;2) condicoes de entrada e saida;3) condicoes de check;4) condicao padrao do sistema (ERROR);8.4.1. Condicoes ComputacionaisSao aquelas que podem ocorrer durante um calculo de umaexpressao, como, por exemplo, divisao por zero, conversao de constantesnumericas, estouro da capacidade de armazenamento de um campo, etc. Condicao Descricao CONVERSION(CONV) Caracter ilegal para conversao de constantes numericas FIXEDOVERFLOW(FOFL) Valor exercendo a capacidade maxima permitida em um campo OVERFLOW(2OFL) Valor exercendo a capacidade maxima permitida em um campo UNDERFLOW(UFL) Valor abaixo da capacidade minima do campo ZERODIVIDE(ZDIV) Tentativa de divisao por zero SIZE Atribuicao de valores a campo nao suficientemente grande 8.4.2. Condicoes de Entrada e SaidaPodem ocorrer durante uma operacao de E/S, ou seja, durantea transmissao dos dados. Condicao Descricao ENDFILE(arquivo) Atingido o fim do arquivo especificado ENDPAGE(arquivo) Fim da pagina. Para arquivos de impressao NAME(arquivo) Ao ser detectado um nome de arquivo invalido. 8.4.3. Condicoes de checkPodem ocorrer por ocasiao de erros em strings, emdimensionamento de arrays e em caso de depuracao de programas. Condicao Descricao CHECK(lista) Toda vez que houver uma modificacao no valor de alguma variavel da lista especificada, ou alguma referencia a ela. SUBSCRIPTRANGE(SUBRG) Subscrito fora dos limites definidos para a array. STRINGRANGE(STRG) Comprimento errado do argumento string em SUBSTR. Em todos os casos o tratamento da excecao e feito na formade desvio. Ou seja, nao importa em qual ponto do programa esta o fluxo deexecucao. Assim que ocorre a excecao e executado um comando GOTO para o localdo comando ON e a execucao passa a ser a partir dai.Por exemplo:ON ERROR BEGIN PUTLIST(ERRO DESCONHECIDO NO PROGRAMA); GOTOFIM; END;9. BUILT-IN FUNCTIONS (FUNCOESINTERNAS)Sao procedimentos prontos da linguagem que tem comofinalidade diminuir o esforco de programacao em determinadas ocasioes. PL/I euma linguagem rica em funcoes deste tipo, possuindo um grande numero de procedimentosprontos. A seguir, veremos apenas uma breve descricao dos mais utilizados. Funcao Descricao DATE() Retorna uma striing no formato AAMMDD TIME() Retorna uma string no formato HHMMSSCCC DATETIME() Retorna uma string de data e hora no formato AAAAMMDDHHMMSSCC HIGH(n) Move HIGH VALUES (xFF) para uma variavel CHAR de tamanho n. LOW(n) Move LOW VALUES (x00) para uma variavel CHAR de tamanho n. VERIFY(st1,st2) Retorna zero se todos os caracteres da string 1 existirem na string 2. Se um caracter da string 1 nao existir na 2, retorna sua