19/04/25

Rodando um programa PL/L no Hercules

PL/I (alternativamente PL/1, lê-se pê-ele-um) significa Programming Language One e é uma linguagem de programação desenvolvida pela IBM em meados de 1960. A previsão da IBM era que a linguagem fosse utilizada em ciências, inteligência artificial e negócios. Por um período de tempo foi a principal linguagem ensinada na Universidade de Michigan Dearborn. Entretanto, a popularidade declinou nos anos recentes, devido à introdução de línguagens de programação mais modernas voltadas para o ambiente Mainframe.

Sua principal função é o processamento/manipulação de dados; suporta recursão e alocação dinâmica.

Por que PL/I ainda é relevante?

Multifuncionalidade: Pode ser usada tanto para aplicações comerciais quanto científicas.
Integração com o z/OS: Excelente desempenho em ambientes mainframe, com suporte nativo a arquivos VSAM, DB2, e até interfaces com CICS.
Recursos modernos: Mesmo sendo antiga, PL/I possui recursos como tratamento de exceções (ON UNDEFINEDFILE, ON ENDFILE etc.) que nem COBOL nativamente oferece da mesma forma.
Legado ativo: Muitas instituições financeiras e governamentais ainda possuem sistemas escritos em PL/I, exigindo manutenção e evolução constante.

Hello World

Esse é um exemplo de um JCL de Hello World que podemos criar

   File  Edit  Edit_Settings  Menu  Utilities  Compilers  Test  Help            
 ───────────────────────────────────────────────────────────────────────────────
 EDIT       ADCD.LIB.JCL($$PLII) - 01.04                    Columns 00001 00072
 Command ===>                                                  Scroll ===> CSR
 ****** ***************************** Top of Data ******************************
 000001 //PL10001 JOB 'COMPILA E LOAD DE PROGRAMA PL/1', 
 000002 // NOTIFY=&SYSUID,REGION=0M 
 000003 //* ------------------------------------------------------------------ 
 000004 //*                  PROGRAMA PL/1 DE EXEMPLO 
 000005 //* ------------------------------------------------------------------ 
 000006 //STEP1 EXEC IBMZCPLG 
 000007 //PLI.STEPLIB DD DSN=IEL370.SIBMZCMP,DISP=SHR 
 000008 //SYSIN DD * 
 000009   Hello: procedure options (main); 
 000010   put skip list ('Hello World em PL/1 !'); 
 000011   end Hello; 
 000012 //* 
 ****** **************************** Bottom of Data ****************************

Rodou ok

   Display  Filter  View  Print  Options  Help                                  
 -------------------------------------------------------------------------------
 SDSF OUTPUT DISPLAY PL10001  JOB00038  DSID     2 LINE 0       COLUMNS 02- 81  
 COMMAND INPUT ===>                                            SCROLL ===> CSR
********************************* TOP OF DATA **********************************
                         J E S 2  J O B  L O G  --  S Y S T E M  S Y S 1  --  N 
                                                                                
00.59.03 JOB00038 ---- SUNDAY,    20 APR 2025 ----                              
00.59.03 JOB00038  IRR010I  USERID IBMUSER  IS ASSIGNED TO THIS JOB.            
00.59.03 JOB00038  ICH70001I IBMUSER  LAST ACCESS AT 00:53:18 ON SUNDAY, APRIL 2
00.59.03 JOB00038  $HASP373 PL10001  STARTED - INIT 1    - CLASS A - SYS SYS1   
00.59.03 JOB00038  IEF403I PL10001 - STARTED - TIME=00.59.03                    
00.59.06 JOB00038  IEF404I PL10001 - ENDED - TIME=00.59.06                      
00.59.06 JOB00038  $HASP395 PL10001  ENDED                                      
------ JES2 JOB STATISTICS ------                                               
  20 APR 2025 JOB EXECUTION DATE                                                
           12 CARDS READ                                                        
          655 SYSOUT PRINT RECORDS                                              
            0 SYSOUT PUNCH RECORDS                                              
           36 SYSOUT SPOOL KBYTES                                               
         0.05 MINUTES EXECUTION TIME                                            
        1 //PL10001 JOB 'COMPILA E LOAD DE PROGRAMA PL/1',                      
          // NOTIFY=&SYSUID,REGION=0M                                           
          //* ------------------------------------------------------------------
          //*                  PROGRAMA PL/1 DE EXEMPLO                         
          //* ------------------------------------------------------------------
          IEFC653I SUBSTITUTION JCL - 'COMPILA E LOAD DE PROGRAMA PL/1',NOTIFY=I
        2 //STEP1 EXEC IBMZCPLG                                                 
        3 XXIBMZCPLG PROC LNGPRFX='IBMZ.V3R7M0',LIBPRFX='CEE',                  
          XX             SYSLBLK=3200,PLANG=EDCPMSGE,GOPGM=GO                   
          XX*                                                                   
          XX********************************************************************
          XX* Licensed Materials - Property of IBM                              
          XX* 5655-H31                                                          
          XX* (C) Copyright IBM Corp. 1999, 2007 All Rights Reserved            
          XX*                                                                   
          XX* US Government Users Restricted Rights - Use, duplication or       
          XX* disclosure restricted by GSA ADP Schedule Contract with IBM Corp. 
          XX*                                                                   
          XX********************************************************************
          XX*                                                                   
          XX*       IBM Enterprise PL/I for z/OS                                
          XX*       Version 3 Release 7 Modification 0                          

Observe a penultima linha - Hello World em PL/1 ! - rodou ok

   Display  Filter  View  Print  Options  Help                                  
 -------------------------------------------------------------------------------
 SDSF OUTPUT DISPLAY PL10001  JOB00038  DSID   106 LINE 231     COLUMNS 02- 81  
 COMMAND INPUT ===>                                            SCROLL ===> CSR
                                                                                
 ENTRY POINT AND ALIAS SUMMARY:                                                 
                                                                                
 NAME:            ENTRY TYPE AMODE C_OFFSET CLASS NAME        STATUS            
                                                                                
 CEESTART          MAIN_EP      31 00000000 B_TEXT                              
                                                                                
                         ***** E N D  O F  R E P O R T *****                    
                                                                                
                                                                                
                                                                                
                                                                                
z/OS V1 R10 BINDER     00:59:04 SUNDAY APRIL 20, 2025                           
BATCH EMULATOR  JOB(PL10001 ) STEP(STEP1   ) PGM= IEWL      PROCEDURE(LKED    ) 
IEW2008I 0F03 PROCESSING COMPLETED.  RETURN CODE =  0.                          
                                                                                
                                                                                
                                                                                
----------------------                                                          
MESSAGE SUMMARY REPORT                                                          
----------------------                                                          
 TERMINAL MESSAGES      (SEVERITY = 16)                                         
 NONE                                                                           
                                                                                
 SEVERE MESSAGES        (SEVERITY = 12)                                         
 NONE                                                                           
                                                                                
 ERROR MESSAGES         (SEVERITY = 08)                                         
 NONE                                                                           
                                                                                
 WARNING MESSAGES       (SEVERITY = 04)                                         
 NONE                                                                           
                                                                                
 INFORMATIONAL MESSAGES (SEVERITY = 00)                                         
 2008  2278                                                                     
                                                                                
                                                                                
 **** END OF MESSAGE SUMMARY REPORT ****                                        
                                                                                
                                                                                
 Hello World em PL/1 !
 ******************************** BOTTOM OF DATA ********************************


0 comentários:

Enviar um comentário