b'\n_START_ARTICLE_\nPL/I\n_START_SECTION_\nEstrutura padr\xc3\xa3o\n_START_PARAGRAPH_\nLABEL:     PROC OPTIONS (MAIN)\xc2\xa0;         Identifica\xc3\xa7\xc3\xa3o do programa_NEWLINE_    DECLARE    arquivos ,                    Declara\xc3\xa7\xc3\xa3o de vari\xc3\xa1veis_NEWLINE_               campos ,_NEWLINE_               PICTUREs de edi\xc3\xa7\xc3\xa3o ,_NEWLINE_               tabelas ,_NEWLINE_               estruturas ,_NEWLINE_               inicializa\xc3\xa7\xc3\xb5es ,_NEWLINE_               redefini\xc3\xa7\xc3\xb5es ,_NEWLINE_               fun\xc3\xa7\xc3\xb5es (BUILT-IN) ,_NEWLINE_               rotinas externas;_NEWLINE_    ON CONDITIONS\xc2\xa0;                          Tratamento de condi\xc3\xa7\xc3\xb5es_NEWLINE_    COMANDOS\xc2\xa0;                               Comandos / Instru\xc3\xa7\xc3\xb5es_NEWLINE_      movimenta\xc3\xa7\xc3\xb5es\xc2\xa0;_NEWLINE_      express\xc3\xb5es\xc2\xa0;_NEWLINE_      concatena\xc3\xa7\xc3\xa3o\xc2\xa0;_NEWLINE_      condi\xc3\xa7\xc3\xb5es\xc2\xa0;_NEWLINE_      LOOPs\xc2\xa0;_NEWLINE_      manipula\xc3\xa7\xc3\xa3o de arquivos\xc2\xa0;_NEWLINE_      manipula\xc3\xa7\xc3\xa3o de banco de dados\xc2\xa0;_NEWLINE_      chamadas de rotinas internas;_NEWLINE_      chamadas de rotinas externas;_NEWLINE_    COMANDOS\xc2\xa0;_NEWLINE_    ROT-LABEL: PROC\xc2\xa0;                        Identifica\xc3\xa7\xc3\xa3o da_NEWLINE_                                             Sub-rotina interna_NEWLINE_    END ROT-LABEL\xc2\xa0;                          Finaliza\xc3\xa7\xc3\xa3o da_NEWLINE_                                             Sub-rotina interna_NEWLINE_    END LABEL\xc2\xa0;                              Finaliza\xc3\xa7\xc3\xa3o do programa\n_START_SECTION_\nOperadores de compara\xc3\xa7\xc3\xa3o\n_START_PARAGRAPH_\n=Igual_NEWLINE__NEWLINE_^=diferente_NEWLINE__NEWLINE_>maior_NEWLINE__NEWLINE_>=maior ou igual_NEWLINE__NEWLINE_<menor_NEWLINE__NEWLINE_<=menor ou igual\n_START_SECTION_\nCOMANDO "SELECT"\n_START_PARAGRAPH_\nSELECT (<campo>);_NEWLINE_  WHEN (<valor> ou <condi\xc3\xa7\xc3\xa3o>) --<comando>--;_NEWLINE_  ..._NEWLINE_  WHEN (<valor> ou <condi\xc3\xa7\xc3\xa3o>) --<comando>--;_NEWLINE_  OTHERWISE --<comando>--;_NEWLINE_END;\n_START_SECTION_\nCOMANDO "IF"\n_START_PARAGRAPH_\nIF --<condi\xc3\xa7\xc3\xa3o>-- THEN --<comando>--;_NEWLINE_                 ELSE --<comando>--;\n_START_SECTION_\nCOMANDO "WHILE"\n_START_PARAGRAPH_\nDO WHILE (--CONDICAO--);_NEWLINE_  --COMANDOS--;_NEWLINE_END;\n_START_SECTION_\nNome de vari\xc3\xa1veis\n_START_PARAGRAPH_\nO compilador PL/I permite usar vari\xc3\xa1veis que s\xc3\xa3o consideradas "reservadas" em outras linguagens (como IF, ELSE, THEN,etc) e usa o mesmo s\xc3\xadmbolo(\'=\') para verificar a igualdade e atribui\xc3\xa7\xc3\xa3o. Por exemplo:_NEWLINE_IF IF = THEN THEN THEN = ELSE; ELSE ELSE = IF;\n_START_SECTION_\nProcura por uma string\n_START_PARAGRAPH_\nFINDSTRINGS:_NEWLINE_PROCEDURE OPTIONS(MAIN);_NEWLINE_  /* READ A STRING, THEN PRINT EVERY */_NEWLINE_  /* SUBSEQUENT LINE WITH A MATCH */_NEWLINE__NEWLINE_  DECLARE PAT VARYING CHARACTER(100),_NEWLINE_          LINEBUF VARYING CHARACTER(100),_NEWLINE_          (LINENO, NDFILE, IX) FIXED BINARY;_NEWLINE__NEWLINE_  NDFILE = 0;_NEWLINE_  ON ENDFILE(SYSIN) NDFILE=1;_NEWLINE_  GET EDIT(PAT) (A);_NEWLINE_  LINENO = 1;_NEWLINE_  DO WHILE (NDFILE=0);_NEWLINE_    GET EDIT(LINEBUF) (A);_NEWLINE_    IF LENGTH(LINEBUF) > 0_NEWLINE_    THEN_NEWLINE_      DO;_NEWLINE_        IX = INDEX(LINEBUF, PAT);_NEWLINE_        IF IX > 0_NEWLINE_        THEN_NEWLINE_          DO;_NEWLINE_            PUT SKIP EDIT (LINENO,LINEBUF)(F(2),A);_NEWLINE_          END;_NEWLINE_      END;_NEWLINE_    LINENO = LINENO + 1;_NEWLINE_  END;_NEWLINE_END FINDSTRINGS;\n_START_SECTION_\nHello World\n_START_PARAGRAPH_\nHELLO:   PROCEDURE OPTIONS (MAIN);_NEWLINE__NEWLINE_             /* A PROGRAM TO OUTPUT HELLO WORLD */_NEWLINE_             FLAG = 0;_NEWLINE__NEWLINE_LOOP:     DO WHILE (FLAG = 0);_NEWLINE_             PUT SKIP LIST(\'HELLO WORLD!\');_NEWLINE_          END;_NEWLINE__NEWLINE_END HELLO;\n_START_SECTION_\nN-Primeiros N\xc3\xbameros Perfeitos\n_START_PARAGRAPH_\nprogram nperfeitos_NEWLINE_ declare_NEWLINE_ n,qtd,soma,contador,i,j: int;_NEWLINE_ numeros: array[1..40] of int;_NEWLINE__NEWLINE_ begin_NEWLINE_  display(\'Valor de N\')_NEWLINE_  reply(n);_NEWLINE_  qtd=0;_NEWLINE_  i=2;_NEWLINE_   while qtd<n do_NEWLINE_     begin_NEWLINE_     soma=0;_NEWLINE_     j=1;_NEWLINE_     while j<i do_NEWLINE_       begin_NEWLINE_     if (i%j=0) then_NEWLINE_       begin_NEWLINE_         soma=soma+j;_NEWLINE_       end;_NEWLINE_     else_NEWLINE_     j=j+1;_NEWLINE_     endif;_NEWLINE_     if (soma=i) then_NEWLINE_       begin_NEWLINE_         numeros[qtd+1]=i;_NEWLINE_         qtd=qtd+1;_NEWLINE_       end;_NEWLINE_     else i=i+1;_NEWLINE_     endif;_NEWLINE_     for contador=1 to n do_NEWLINE_     begin_NEWLINE_      display(numeros[contador]);_NEWLINE_ end;\n_START_SECTION_\nBubble Sort\n_START_PARAGRAPH_\nSHELL:   PROCEDURE OPTIONS (MAIN);_NEWLINE_         DECLARE_NEWLINE_           ARRAY(50) FIXED BIN(15),_NEWLINE_           (K,N) FIXED BIN(15);_NEWLINE__NEWLINE_         GET LIST(N);_NEWLINE_         GET EDIT((ARRAY(K) DO K = 1 TO N));_NEWLINE_         PUT EDIT((ARRAY(K) DO K = 1 TO N));_NEWLINE_         CALL BUBBLE(ARRAY,N);_NEWLINE__NEWLINE_END BUBBLE;_NEWLINE__NEWLINE_BUBBLE:   PROCEDURE(ARRAY,N); /* BUBBLE SORT*/_NEWLINE_          DECLARE (I,J) FIXED BIN(15);_NEWLINE_          DECLARE S BIT(1);        /* SWITCH */_NEWLINE_          DECLARE Y FIXED BIN(15); /* TEMPO */_NEWLINE_          DO I = N-1 BY -1 TO 1;_NEWLINE_            S = \'1\'B;_NEWLINE_            DO J = 1 TO I;_NEWLINE_              IF X(J)>X(J+1) THEN DO;_NEWLINE_                S = \'0\'B;_NEWLINE_                Y = X(J);_NEWLINE_                X(J) = X(J+1);_NEWLINE_                X(J+1) = Y;_NEWLINE_                END;_NEWLINE_              END;_NEWLINE_            IF S THEN RETURN;_NEWLINE_            END;_NEWLINE_          RETURN;_NEWLINE_          END SRT;'