GETEDIT(V1,V2,V3) (R(FORMATO));... PUTLINE(5) EDIT (A,B,C) (R(FORMATO));4. BLOCOS4.1. Procedure (procedimento)Sao blocos de instrucoes que podem receber valores comoargumentos atraves de uma area de entrada, realizar um determinadoprocessamento e ainda retornar valoresao procedimento chamador atraves de uma area de saida. Funcionam de formabastante semelhante aos programas chamados com a instrucao CALL do COBOL (emPL/I o comando de chamada tambem sera CALL). Veremos mais tarde informacoesdetalhadas sobre procedimentos.4.2. Procedimento principalTodo programa escrito em PL/I apresentara obrigatoriamenteum procedimento principal que sera automaticamente invocado pelo sistemaoperacional depois que o programa foi compilado. Este procedimento poderainvocar outros em tempo de execucao.O formato da procedure principal que iniciara o programasera sempre:: PROC OPTIONS(MAIN);Todos os comandos do programa serao codificados apos estalinha de declaracao. Ao final dos comandos o procedimento principal deve serencerrado utilizando o formato a seguir:END ;Todos os demais procedimentos que forem codificados noprograma deverao estar antes do END da procedure principal.Para exemplificar o que foi dito, suponha a codificacao deum programa chamado PROG01 conforme segue:PROG01: PROCEDURE (PARM)OPTIONS (MAIN); PUT SKIP(OLA, BEM VINDOS A G&P);END PROG01;Explicacao:APROG01 E o nome doprograma identificado na JCL, devendo conter no maximo 07 caracteres,corresponde a procedure principal;APROCEDUREOPTIONS (MAIN) Deve ser o primeiro comando obrigatorio do programa. A palavra chavePROCEDURE pode ser abreviada para PROC.A(PARM) Sao parametrospassados pelo cartao JCL. Sua codificacao e opcional.AEND Indica o terminodo programa. E obrigatorio, devendo sempre ser indicado o nome. 4.3. Blocos de comandosUm bloco e uma sequencia de comandos que define uma area doprograma. Sera utilizado em diversos comandos e estruturas do programa e poderaassumir um dos formatos a seguir:DO; COMANDO 1; COMANDO 2; ... COMANDO N;END;ouBEGIN; COMANDO 1; COMANDO 2; ... COMANDO N;END;A utilizacao de um destes dois conjuntos dependera docomando ou estrutura utilizado.4.4. Label ou Rotulo de comandoNao e considerado um componente de comando. Pode ser utilizadopelo programador simplesmente para identificar partes de uma programa ou causardesvios com o comando GOTO. O rotulo em um programa sera sempre seguido de doispontos (:) e sem espacos, conforme formato a seguir:CALCULA: A = B + 1; C = A * B / 2 + D;4.5. DesviosEm um procedimento PL/I os comandos sao executados nasequencia em foram codificados. Havendo varios labels, estes tambem terao seuscomandos executados em ordem sequencial.No entanto, o fluxo de execucao do programa podeperfeitamente ser alterado atraves de comandos que ocasionam desvios.4.6. Comando GOTOO comando GOTO sera utilizado para ocasionar um desvioincondicional do ponto que esta sendo executado do programa para um outro labelespecificado.Sintaxe:GOTO ;Lembre-se que GOTO e um comando de programacao linear e fereas regras de programacao estruturada, pela simples configuracao de logicadesta. Assim sendo, pode ser eventualmente utilizado, desde que comdisciplina, sem que nao prejudique a clareza e o bom entendimento da logicado programa.4.7. Comando CALL Desvia o fluxo deexecucao para a procedure especificada, retornando para a linha imediatamenteposterior a chamada.Sintaxe:CALL ;O procedimento sera codificado da seguinte maneira:: PROC; COMANDO1; COMANDO2; ... COMANDON;END ;As variaveis definidas no procedimento principal do programapoderao ser normalmente utilizadas nas demais procedures.Exemplo:PROG02: PROC OPTIONS (MAIN); DCL(A, B, C) FIXED(4); CALLACESSA; C= A + B; PUTSKIP(2) LIST(A, B); ACESSA: PROC; GET LIST(A, B); END ACESSA:END PROG02;Observe no exemplo dado,