a qual estrutura pertence determinado identificador. Osnomes sempre estarao dispostos em ordem de hierarquia, da maior para a menor,separados por ponto (.).7.3. Atributo LikeSuponha que seja necessario criar uma segunda estrutura paraauxiliar no processamento de REGISTRO, criada no item 5.1. Neste caso, ja quePL/I permite, poderemos simplesmente repetir todos os nomes de campos que foramutilizados. Nao havera porem necessidade de redigitacao de todos os campos nemdos recursos do editor utilizado para copiar a regiao ja codificada do programa.Observe a declaracao a seguir:DCL 01 REGISTRO-AUX. LIKEREGISTRO.Toda a estrutura de REGISTRO sera repetida em REGISTRO-AUX.Neste caso, a utilizacao de referencias qualificadas se fara obrigatoria nodecorrer do programa.8. COMANDOS DE DECISAO8.1. Comando IFSintaxe:IF THEN ;ELSE ;Analisa a expressao logica. Se ela resultar em verdadeiro,sera executado o bloco de comandos 1, do contrario sera executado o bloco decomandos 2.ExemploIF A> B THEN PUTLIST (A);ELSE PUTLIST (B);Quando houver mais de um comando a ser executado na condicaoestabelecido por IF ou na negacao (ELSE), devera ser utilizada a estrutura debloco de comandos conforme segue:IF THENDO; COMANDO1; COMANDO2; ... COMANDON;END;ELSEDO; COMANDO1; COMANDO2; ... COMANDON;END;O comando IF em PL/I oferece uma maneira diferente de testara negacao de uma condicao, onde nao sera necessaria a utilizacao da particulalogica NOT. Observe:IF THENELSEDO; COMANDO1; COMANDO2; ... COMANDON;END;8.2. Estrutura do lacoO laco e uma das tecnicas mais caracteristicas daprogramacao estruturada. Consiste na execucao de um determinado trecho doprograma diversas vezes, geralmente determinado por uma condicao.8.2.1. Comando DO (enquanto uma dadacondicao for verdadeira)Como ja vimos o comando DO delimita o inicio de um bloco decomandos, mas tambem pode ser utilizado para criar uma estrutura de lacoexecutando instrucoes enquanto madada condicao se mantiver verdadeira.Sintaxe:DO WHILE () COMANDO1; COMANDO2; ... COMANDON;END;Observe que condicaoespecificada apos o WHILE deve estar entre parenteses.8.2.2. Comando DO (ate que uma dadacondicao seja verdadeira)Executa todos os comandos do laco ate que a condicao especificada seja verdadeira. Pode ser comparadoao PERFORM UNTIL do COBOL.Sintaxe:DO UNTIL () COMANDO1; COMANDO2; ... COMANDON;END;Assim como no comando WHILE, a condicao do UNTIL deve sercodificada entre parenteses.8.2.3. Comando DO (laco do contador)Permite a criacao do chamado contador, onde sabemos (outemos como determinar) o numero de vezes que um determinado bloco de instrucoessera executado.Sintaxe:DO VAR = TO BY COMANDO1; COMANDO2; ... COMANDON;END;Exemplo:DO I = 2 TO 100 BY 2 PUT LIST (I);END;Se nao for especificado nenhum incremento, este eautomaticamente assumido como 1 (um).8.3. Testes multiplos (SELECT)Permite que uma variavel ou mais variaveis tenham seusvalores testados de modo a condicionar a execucao de blocos de comandos doprograma a este(s) valor(es).Testando uma variavelSELECT (VARIAVEL) WHEN(VALOR 1) DO; COMANDO1; COMANDO2; ... COMANDON; END; WHEN(VALOR 2) DO; COMANDO1; COMANDO2; ... COMANDON; END; ... WHEN(VALOR N) DO; COMANDO1; COMANDO2; ... COMANDON; END; OTHERWISE DO; COMANDO1; COMANDO 2; ... COMANDON; END;END;Testando mais de umavariavelSELECT; WHEN(CONDICAO 1) DO; COMANDO1; COMANDO2; ... COMANDON; END; WHEN(CONDICAO 2) DO; COMANDO1; COMANDO2; ... COMANDON; END; ... WHEN(CONDICAO N) DO; COMANDO1; COMANDO2; ... COMANDON; END; OTHERWISE DO; COMANDO1; COMANDO2; ... COMANDON; END;END;Exemplo:DCL FIXO FIXED (15) INIT (15), CARAC CHAR (08) INIT (CHAR);/****************************************************************/SELECT (FIXO); WHEN(1) DO; PUTSKIP (VALOR 1); END; WHEN(2) DO; PUTSKIP (VALOR 2); END;. OTHERWISE DO; PUTSKIP (NAO VALE NEM 1