quinta-feira, maio 14, 2026

Conferência Automatica de Aplicativos no z/OS

Monitorar aplicativos em Mainframe não precisa ser um gargalo operacional. A conferência manual, além de consumir tempo precioso, abre margem para falhas invisíveis — especialmente onde a quantidade de processos ativos é elevada. A chave para um monitoramento resiliente é a automação. Criar rotinas em Natural elimina a conferencia manual, garantindo a precisão total na verificação do ambiente. Vamos aprender a configurar um JCL e codificar dois programas em Natural que monitoram, em tempo real, as STCs essenciais. O resultado é um acompanhamento robusto, com menos carga de trabalho e maior segurança para os serviços críticos do seu ambiente.

Esse é o JCL completo

//AAFSNSTC JOB (AAF,TSS),KATIA,CLASS=S,MSGCLASS=A                               
//*UQ ALLOW                                                                     
//* ----------------------------------------------------------------            
//*       CHECANDO OS APLICATIVOS ONLINE/OFFLINE NO MAINFRAME                   
//*                     150 LINHAS - 133 COLUNAS                                
//* ----------------------------------------------------------------            
//SDSF     EXEC PGM=SDSF,PARM='++150,133'                                       
//ISFOUT   DD DSN=AAF.S.OPER1,DISP=SHR                                          
//ISFIN    DD *                                                                 
SET CONSOLE BATCH                                                               
SET DELAY 600                                                                   
ULOG                                                                            
/D A,L                                                                          
END                                                                             
//* ----------------------------------------------------------------            
//*                          FILTRO NO NATURAL                                  
//* ----------------------------------------------------------------            
//FILTRO   EXEC NATURAL,PARM1='SYS=P,MT=0,STACK=(LOGON ADABAS8)'               
//CMWKF01  DD DSN=AAF.S.OPER1,DISP=SHR                                          
//CMWKF02  DD DSN=AAF.S.OPER2,DISP=SHR                                          
//SYSOUT   DD SYSOUT=*                                              
//CMPRINT  DD SYSOUT=*                                              
//SYSPRINT DD SYSOUT=*                                              
//CMPRT01  DD SYSOUT=*                                              
//SYSIN    DD *                                                     
AAFPTSS9                                                            
//* ----------------------------------------------------------------
//*            COLOCANDO EM ORDEM ALFABETICA OS APLICATIVOS         
//* ----------------------------------------------------------------
//SORT     EXEC PGM=SORT                                            
//SYSPRINT DD SYSOUT=*                                              
//SYSOUT   DD SYSOUT=*                                              
//SORTIN   DD DSN=AAF.S.OPER2,DISP=SHR                              
//SORTWK1  DD UNIT=SYSDA,DISP=(,DELETE),SPACE=(CYL,(4),RLSE),       
//            VOL=SER=WRK001                                        
//SORTOUT  DD DSN=AAF.S.OPER3,DISP=SHR                              
//SYSIN    DD *                                                     
   SORT FIELDS=(1,8,CH,A)                                           
   RECORD TYPE=F,LENGTH=(40)                                        
//* ----------------------------------------------------------------
//*                   LISTANDO OS APLICATIVOS                       
//* ----------------------------------------------------------------
//NATD EXEC NATURAL,PARM1='SYS=P,MT=0,STACK=(LOGON ADABAS8)'       
//CMWKF01  DD DSN=AAF.S.OPER3,DISP=SHR
//CMWKF02  DD DSN=AAF.S.OPER1,DISP=SHR                              
//SYSOUT   DD SYSOUT=*                                              
//CMPRINT  DD SYSOUT=G                                              
//SYSPRINT DD SYSOUT=*                                              
//CMPRT01  DD SYSOUT=*                                              
//SYSIN    DD *                                                     
AAFPRSTC
//* ----------------------------------------------------------------

A parte muito importante que pega o comando D A,L e grava em um dataset e usa os dois programas natural acima para mostrar que aplicativos estão online - No primeiro step tem essa parte -- PARM='++150,133' -- significa que o resultado do comando (D A,L) vai separar 150 linhas com 133 de colunas para o resultado do comando, se você tem muitos aplicativos que dê mais de 150 linhas - Resultado depois de rodar o job acima - os aplicativos que estão online vai mostrar de uma forma bem simples, os aplicativos que estiverem offline vão aparecer nas primeiras linhas

1Logon accepted to library ADABAS8.     
1NEXT AAFPRSTC                           
1PAG      1                              
0              AADPRMM             ONLINE
               DB2P0020            ONLINE
               DB2P0030            ONLINE
               DB2P0040            ONLINE
               DB2P0050            ONLINE
               DB2P0060            ONLINE
               DB2P0070            ONLINE
               DB2P0080            ONLINE
               DB2P0082            ONLINE
               DB2P0100            ONLINE
               DB2P0110            ONLINE
               DB2P0120            ONLINE
               DB2P0130            ONLINE
               DB2P0140            ONLINE
               DB2P0141            ONLINE
               DB2P0150            ONLINE
               DB2P0160            ONLINE
               DB2P0170            ONLINE
               DB2P0180            ONLINE
               DB2P0190            ONLINE
               DB2P0210            ONLINE
               DB2P0230            ONLINE
               DB2P0240            ONLINE
               DB2P0241            ONLINE
               DB2P0242            ONLINE
               SERVA240            ONLINE
               SERVB230            ONLINE
               SERVC240            ONLINE
               SERVE240            ONLINE
               SERVF230            ONLINE
               SERVH240            ONLINE
               BROKEDET            ONLINE
               BROKELIN            ONLINE
               BROKENFR            ONLINE
               BROKENID            ONLINE
               BROKENIT            ONLINE
               BROKERCH            ONLINE
               BROKERNV            ONLINE
               SERVK080            ONLINE
               SERVM240            ONLINE
               SERVN240            ONLINE
               SERVR230            ONLINE
               SERVR240            ONLINE
               SERVR241            ONLINE
               SERVR242            ONLINE
               SERVR243            ONLINE
               SERVR244            ONLINE
               SERVR245            ONLINE
               SERVR246            ONLINE
               SERVR247            ONLINE
               SERVR248            ONLINE
               SERVR249            ONLINE
               SERVR250            ONLINE
               SERVR251            ONLINE
               SERVUTSS            ONLINE
               COMPLETD            ONLINE
               COMPLETP            ONLINE
               FTP1                ONLINE
               REFSMTP             ONLINE
               REFSNMP             ONLINE
               REFTCPIP            ONLINE
               REFTELNT            ONLINE
               REFTRVS             ONLINE
               REFTVTAM            ONLINE
               AOPD                ONLINE
               AOPHINVD            ONLINE
               AOPIPPD             ONLINE
               AOPLOGD             ONLINE
               AOPLPD              ONLINE
               AOPNETD             ONLINE
               AOPNETSP            ONLINE
               AOPOUTD             ONLINE
               AOPPRWAY            ONLINE
               AOPSDBD             ONLINE
               AOPSSID             ONLINE
               AOPSUBD             ONLINE
               AOPWSMD             ONLINE
1PAG      2                              
0              RACF                ONLINE
               RMF                 ONLINE
               RMFGAT              ONLINE
               TSO                 ONLINE

AAFPTSS9 - Primeiro programa que vamos fazer um filtro, vamos ler do dataset o comando D A,L e vamos pegar os aplicativos

 0010 * -------------------------------------------------------------------- *                                                       
 0020 * FUNCAO     : CHECANDO OS APLICATIVOS ONLINE NO MAINFRAME             *                                                       
 0030 * CRIADO     : KATIA UETI/CLAUDEMAR MARTINS                            *                                                       
 0040 * DATA       : 27/04/2016                                              *                                                       
 0050 * -------------------------------------------------------------------- *                                                       
 0060 * 
 0070 * 
 0080 * -------------------------------------------------------------------- *                                                       
 0090 DEFINE DATA LOCAL                                                                                                              
 0100 01 #FLAG-ON                      (N01)                                                                                         
 0110 01 #FLAG                         (A02)                                                                                         
 0120 01 #NUM                          (N03)                                                                                         
 0130 * -------------------------------------------------------------------- *                                                       
 0140 01 #LINHA                        (A133)                                                                                        
 0150 01 REDEFINE #LINHA                                                                                                             
 0160   02 FILLER                      04X                                                                                           
 0170   02 #JOBS                       (A04)                                                                                         
 0180   02 FILLER                      125X                                                                                          
 0190 01 REDEFINE #LINHA                                                                                                             
 0200   02 FILLER                      04X                                                                                           
 0210   02 #NOME1                     (A08)                                                                                          
 0220   02 REDEFINE #NOME1                                                                                                           
 0230     03 #PREFIX1                (A02)                                                                                           
 0240     03 #SUFIX1                 (A06)                                                                                           
 0250   02 FILLER                      24X                                                                                           
 0260   02 #PROC1                     (A01)                                                                                          
 0270   02 FILLER                      02X                                                                                           
 0280   02 #NOME2                     (A08)                                                                                          
 0290   02 REDEFINE #NOME2                                                                                                           
 0300     03 #PREFIX2                (A02)                                                                                           
 0310     03 #SUFIX2                 (A06)                                                                                           
 0320   02 FILLER                      24X                                                                                           
 0330   02 #PROC2                     (A01)                                                                                          
 0340   02 FILLER                      61X                                                                                           
 0350 * -------------------------------------------------------------------- *                                                       
 0360 01 #NOME-ARQ                     (A40)                                                                                         
 0370 01 REDEFINE #NOME-ARQ                                                                                                          
 0380   02 #NOME-APLICAT              (A08)                                                                                          
 0390   02 FILLER                     (A32)                                                                                          
 0400 * -------------------------------------------------------------------- *                                                       
 0410 END-DEFINE                                                                                                                     
 0420 FORMAT(1) PS=60                                                                                                                
 0430 RESET #FLAG #FLAG-ON #NUM                                                                                                      
 0440 * -------------------------------------------------------------------- *                                                       
 0450 READ WORK FILE 1 #LINHA                                                                                                        
 0460 * -------------------------------------------------------------------- *                                                       
 0470   IF  #JOBS = 'JOBS'                                                                                                           
 0480     MOVE 'OK' TO #FLAG                                                                                                         
 0490     ESCAPE TOP                                                                                                                 
 0500   END-IF                                                                                                                       
 0510 * -------------------------------------------------------------------- *                                                       
 0520   IF #FLAG = 'OK'                                                                                                              
 0530     IF #JOBS = 'JOBS' AND #NUM  GT 0                                                                                           
 0540       MOVE 1 TO #FLAG-ON                                                                                                       
 0550       ESCAPE BOTTOM                                                                                                            
 0560     END-IF                                                                                                                     
 0570 * -------------------------------------------------------------------- *                                                       
 0580 * MONITORAR TODOS OS APLICATIVOS RE - COLUNA UM                        *                                                       
 0590 * -------------------------------------------------------------------- *                                                       
 0600 *   IF #PREFIX1 = 'RE' AND #PROC1 = 'S'                                                                                        
 0610 *     ADD 1 TO #NUM                                                                                                            
 0620 *     MOVE #NOME1 TO #NOME-APLICAT                                                                                             
 0630 *     WRITE WORK FILE 2 #NOME-ARQ                                                                                              
 0640 ****    WRITE 'TSS4 = '   #NOME-ARQ                                                                                            
 0650 *   END-IF                                                                                                                     
 0660 * -------------------------------------------------------------------- *                                                       
 0670 * MONITORAR TODOS OS APLICATIVOS RE - COLUNA DOIS                      *                                                       
 0680 * -------------------------------------------------------------------- *                                                       
 0690 *   IF #PREFIX2 = 'RE' AND #PROC2 = 'S'                                                                                        
 0700 *     ADD 1 TO #NUM                                                                                                            
 0710 *     MOVE #NOME2 TO #NOME-APLICAT                                                                                             
 0720 *     WRITE WORK FILE 2 #NOME-ARQ                                                                                              
 0730 ****    WRITE 'TSS4 = '   #NOME-ARQ                                                                                            
 0740 *   END-IF                                                                                                                     
 0750 * -------------------------------------------------------------------- *                                                       
 0760 * COLUNA 1 - TODOS OS APLICATIVOS QUE MONITORAMOS                      *                                                       
 0770 * -------------------------------------------------------------------- *                                                       
 0780  IF #NOME1                                                                                                                     
 0790      = 'AADPTLMS' OR = 'DB2P0020' OR = 'DB2P0030' OR = 'DB2P0040' OR                                                           
 0800      = 'DB2P0050' OR = 'DB2P0060' OR = 'DB2P0070' OR = 'DB2P0080' OR                                                           
 0810      = 'DB2P0082' OR = 'DB2P0100' OR = 'DB2P0110' OR = 'DB2P0120' OR                                                           
 0820      = 'DB2P0130' OR = 'DB2P0140' OR = 'DB2P0150' OR = 'DB2P0160' OR                                                           
 0830      = 'DB2P0170' OR = 'DB2P0180' OR = 'DB2P0190' OR = 'DB2P0210' OR                                                           
 0840      = 'DB2P0230' OR = 'DB2P0240' OR = 'DB2P0241' OR = 'DB2P0242' OR                                                           
 0850      = 'SERVA240' OR = 'SERVC240' OR = 'SERVE240' OR = 'SERVF230' OR                                                           
 0860      = 'BROKEDET' OR = 'BROKELIN' OR = 'BROKENID' OR = 'BROKENIT' OR                                                           
 0870      = 'BROKERCH' OR = 'BROKERNV' OR = 'SERVK080' OR = 'SERVM240' OR                                                           
 0880      = 'SERVN240' OR = 'SERVR230' OR = 'SERVR240' OR = 'SERVR241' OR                                                           
 0890      = 'SERVR242' OR = 'SERVR243' OR = 'SERVR244' OR = 'SERVR245' OR                                                           
 0900      = 'SERVR246' OR = 'SERVR247' OR = 'SERVR248' OR = 'SERVR249' OR                                                           
 0910      = 'SERVR250' OR = 'SERVUTSS' OR = 'COMPLETD' OR = 'COMPLETP' OR                                                           
 0920      = 'REFSMTP ' OR = 'REFSNMP ' OR = 'REFTCPIP' OR = 'REFTRVS ' OR                                                           
 0930      = 'REFTVTAM' OR = 'AOPD    ' OR = 'AOPHINVD' OR = 'AOPIPPD ' OR                                                           
 0940      = 'AOPLOGD ' OR = 'AOPLPD  ' OR = 'AOPNETD ' OR = 'AOPNETSP' OR                                                           
 0950      = 'AOPOUTD ' OR = 'AOPPRWAY' OR = 'AOPSDBD ' OR = 'AOPSSID ' OR                                                           
 0960      = 'AOPSUBD ' OR = 'AOPWSMD ' OR = 'RMF     ' OR = 'RMFGAT  ' OR                                                           
 0970      = 'TSO     ' OR = 'RACF    ' OR = 'REFTELNT' OR = 'REDPRMM ' OR                                                           
 0980      = 'AOPPRWAY' OR = 'SERVB230' OR = 'FTP1    ' OR = 'DB2P0141' OR                                                           
 0990      = 'SERVH240' OR = 'BROKENFR' OR = 'SERVR251'                                                                              
 1000       ADD 1 TO #NUM                                                                                                            
 1010       MOVE #NOME1 TO #NOME-APLICAT                                                                                             
 1020       WRITE WORK FILE 2 #NOME-ARQ                                                                                              
 1030 ****    WRITE 'TSS4 = '   #NOME-ARQ                                                                                            
 1040     END-IF                                                                                                                     
 1050 * -------------------------------------------------------------------- *                                                       
 1060 * COLUNA 2 - TODOS OS APLICATIVOS QUE MONITORAMOS                      *                                                       
 1070 * -------------------------------------------------------------------- *                                                       
 1080  IF #NOME2                                                                                                                     
 1090      = 'AADPTLMS' OR = 'DB2P0020' OR = 'DB2P0030' OR = 'DB2P0040' OR                                                           
 1100      = 'DB2P0050' OR = 'DB2P0060' OR = 'DB2P0070' OR = 'DB2P0080' OR                                                           
 1110      = 'DB2P0082' OR = 'DB2P0100' OR = 'DB2P0110' OR = 'DB2P0120' OR                                                           
 1120      = 'DB2P0130' OR = 'DB2P0140' OR = 'DB2P0150' OR = 'DB2P0160' OR                                                           
 1130      = 'DB2P0170' OR = 'DB2P0180' OR = 'DB2P0190' OR = 'DB2P0210' OR                                                           
 1140      = 'DB2P0230' OR = 'DB2P0240' OR = 'DB2P0241' OR = 'DB2P0242' OR                                                           
 1150      = 'SERVA240' OR = 'SERVC240' OR = 'SERVE240' OR = 'SERVF230' OR                                                           
 1160      = 'BROKEDET' OR = 'BROKELIN' OR = 'BROKENID' OR = 'BROKENIT' OR                                                           
 1170      = 'BROKERCH' OR = 'BROKERNV' OR = 'SERVK080' OR = 'SERVM240' OR                                                           
 1180      = 'SERVN240' OR = 'SERVR230' OR = 'SERVR240' OR = 'SERVR241' OR                                                           
 1190      = 'SERVR242' OR = 'SERVR243' OR = 'SERVR244' OR = 'SERVR245' OR                                                           
 1200      = 'SERVR246' OR = 'SERVR247' OR = 'SERVR248' OR = 'SERVR249' OR                                                           
 1210      = 'SERVR250' OR = 'SERVUTSS' OR = 'COMPLETD' OR = 'COMPLETP' OR                                                           
 1220      = 'REFSMTP ' OR = 'REFSNMP ' OR = 'REFTCPIP' OR = 'REFTRVS ' OR                                                           
 1230      = 'REFTVTAM' OR = 'AOPD    ' OR = 'AOPHINVD' OR = 'AOPIPPD ' OR                                                           
 1240      = 'AOPLOGD ' OR = 'AOPLPD  ' OR = 'AOPNETD ' OR = 'AOPNETSP' OR                                                           
 1250      = 'AOPOUTD ' OR = 'AOPPRWAY' OR = 'AOPSDBD ' OR = 'AOPSSID ' OR                                                           
 1260      = 'AOPSUBD ' OR = 'AOPWSMD ' OR = 'RMF     ' OR = 'RMFGAT  ' OR                                                           
 1270      = 'TSO     ' OR = 'RACF    ' OR = 'REFTELNT' OR = 'REDPRMM ' OR                                                           
 1280      = 'AOPPRWAY' OR = 'SERVB230' OR = 'FTP1    ' OR = 'DB2P0141' OR                                                           
 1290      = 'SERVH240' OR = 'BROKENFR' OR = 'SERVR251'                                                                              
 1300       ADD 1 TO #NUM                                                                                                            
 1310       MOVE #NOME2 TO #NOME-APLICAT                                                                                             
 1320       WRITE WORK FILE 2 #NOME-ARQ                                                                                              
 1330 ****    WRITE 'TSS4 = '   #NOME-ARQ                                                                                            
 1340     END-IF                                                                                                                     
 1350 * -------------------------------------------------------------------- *                                                       
 1360   END-IF                                                                                                                       
 1370 END-WORK                                                                                                                       
 1380 END                                                                                                                            

AAFPRSTC - agora vamos listar no nosso job os aplicativos que estão online

 0010 * -------------------------------------------------------------------- *                                                       
 0020 * FUNCAO - VERIFICAR OS APLICATIVOS QUE ESTAO ONLINE/OFFLINE           *                                                       
 0030 * AUTOR  - CLAUDEMAR MARTINS DE SA                                     *                                                       
 0040 * -------------------------------------------------------------------- *                                                       
 0050 DEFINE DATA                                                                                                                    
 0060 LOCAL                                                                                                                          
 0070 * --- ADICIONANDO MAIS UM APLICATIVO AUMENTE O VALOR CONST                                                                                                                                                            
 0080 * --- TEMOS ATUALMENTE 81 APLICATIVOS PARA MONITORAR
 0090 *                                                                                                                              
 0100 01 #TOTAL-APPS       (I2) CONST <81>                                                                                           
 0110 01 #REGISTRO-ENTRADA (A80)                                                                                                     
 0120 01 #LISTA-PESQUISA   (A8/1:#TOTAL-APPS)                                                                                        
 0130   INIT                                                                                                                         
 0140 *                                                                                                                              
 0150 * --- APLICATIVOS A SEREM MONITORADOS - TEMOS 81 STCs
 0160 *                                                                                                                              
 0170  <'AADPTLMS','DB2P0020','DB2P0030','DB2P0040','DB2P0050',                                                                      
 0180   'DB2P0060','DB2P0070','DB2P0080','DB2P0082','DB2P0100','DB2P0110',                                                           
 0190   'DB2P0120','DB2P0130','DB2P0140','DB2P0141','DB2P0150','DB2P0160',                                                           
 0200   'DB2P0170','DB2P0180','DB2P0190','DB2P0210','DB2P0230','DB2P0240',                                                           
 0210   'DB2P0241','DB2P0242','SERVA240','SERVB230','SERVC240','SERVE240',                                                           
 0220   'SERVF230','SERVH240','BROKEDET','BROKELIN','BROKENFR','BROKENID',                                                           
 0230   'BROKENIT','BROKERCH','BROKERNV','SERVK080','SERVM240','SERVN240',                                                           
 0240   'SERVR230','SERVR240','SERVR241','SERVR242','SERVR243','SERVR244',                                                           
 0250   'SERVR245','SERVR246','SERVR247','SERVR248','SERVR249','SERVR250',                                                           
 0260   'SERVR251','SERVUTSS','COMPLETD','COMPLETP','FTP1    ','REFSMTP ',                                                           
 0270   'REFSNMP ','REFTCPIP','REFTELNT','REFTRVS ','REFTVTAM','AOPD    ',                                                           
 0280   'AOPHINVD','AOPIPPD ','AOPLOGD ','AOPLPD  ','AOPNETD ','AOPNETSP',                                                           
 0290   'AOPOUTD ','AOPPRWAY','AOPSDBD ','AOPSSID ','AOPSUBD ','AOPWSMD ',                                                           
 0300   'RACF    ','RMF     ','RMFGAT  ','TSO     '>                                                                                 
 0310 *                                                                                                                              
 0320 * -------------------------------------------------------------------- *                                                       
 0330 *                                                                                                                              
 0340 01 #JA-ENCONTRADO    (L/1:#TOTAL-APPS) INIT                                                                             
 0350 01 #I                (I2)                                                                                                      
 0360 END-DEFINE                                                                                                                     
 0370 *                                                                                                                              
 0380 * -------------------------------------------------------------------- *                                                       
 0390 *                                                                                                                              
 0400 FORMAT LS=183 PS=0                                                                                                             
 0410 * EJECT OFF                                                                                                                    
 0420 * SET CONTROL 'f+'                                                                                                             
 0430 * SET CONTROL 'H'                                                                                                              
 0440 *                                                                                                                              
 0450 * --- 1. FASE DE LEITURA (APENAS IDENTIFICACAO) ---                                                                            
 0460 *                                                                                                                              
 0470 READ WORK FILE 1 #REGISTRO-ENTRADA                                                                                             
 0480   FOR #I = 1 TO #TOTAL-APPS                                                                                                    
 0490     IF #JA-ENCONTRADO(#I)                                                                                                      
 0500       ESCAPE TOP                                                                                                               
 0510     END-IF                                                                                                                     
 0520 * -------------------------------------------------------------------- *                                                       
 0530 * -------------------------------------------------------------------- *                                                       
 0540     IF #REGISTRO-ENTRADA = SCAN #LISTA-PESQUISA(#I)                                                                            
 0550       #JA-ENCONTRADO(#I) := TRUE                                                                                               
 0560       ESCAPE BOTTOM                                                                                                            
 0570     END-IF                                                                                                                     
 0580   END-FOR                                                                                                                      
 0590 END-WORK                                                                                                                       
 0600 *                                                                                                                              
 0610 * --- PRIMEIRO OS APLICATIVOS OFFLINE ---                                                                                      
 0620 *                                                                                                                              
 0630 FOR #I = 1 TO #TOTAL-APPS                                                                                                      
 0640   IF NOT #JA-ENCONTRADO(#I)                                                                                                    
 0650 *                                                                                                                              
 0660    WRITE '             ' #LISTA-PESQUISA(#I) (AL=10)                                                                           
 0670    ' ====  OFFLINE  ===='                                                                                                    
 0680 END-IF                                                                                                                         
 0690 END-FOR                                                                                                                        
 0700 *                                                                                                                              
 0710 * --- SEGUNDO OS APLICATIVOS ONLINE ---                                                                                        
 0720 *                                                                                                                              
 0730 FOR #I = 1 TO #TOTAL-APPS                                                                                                      
 0740   IF #JA-ENCONTRADO(#I)                                                                                                        
 0750     WRITE '             ' #LISTA-PESQUISA(#I) (AL=10)                                                                          
 0760    '         ONLINE       '                                                                                                    
 0770     WRITE WORK FILE 2 #LISTA-PESQUISA(#I)                                                                                      
 0780   END-IF                                                                                                                       
 0790 END-FOR                                                                                                                        
 0800 END 

Datasets que foram criados para o nosso JCL

//AACCBR14 JOB (ALAD,DISA),'SCHED',CLASS=7,MSGCLASS=A             
//*UQ ALLOW                                                       
//* ------------------------------------------------------------  
//*                   CRIA DATASET NO MAINFRAME                   
//* ------------------------------------------------------------  
//S1       EXEC PGM=IEFBR14                                       
//CATLG1   DD DSN=AAF.S.OPER1,                   
//         DISP=(NEW,CATLG,DELETE),                               
//         DCB=(DSORG=PS,LRECL=133,BLKSIZE=1330,RECFM=FB),                    
//         VOL=SER=DISCO1,SPACE=(CYL,(4,1),RLSE),UNIT=SYSDA
//*
//CATLG1   DD DSN=AAF.S.OPER2,                   
//         DISP=(NEW,CATLG,DELETE),                               
//         DCB=(DSORG=PS,LRECL=133,BLKSIZE=1330,RECFM=FB),                    
//         VOL=SER=DISCO1,SPACE=(CYL,(4,1),RLSE),UNIT=SYSDA
//*
//CATLG1   DD DSN=AAF.S.OPER3,                   
//         DISP=(NEW,CATLG,DELETE),                               
//         DCB=(DSORG=PS,LRECL=133,BLKSIZE=1330,RECFM=FB),                    
//         VOL=SER=DISCO1,SPACE=(CYL,(4,1),RLSE),UNIT=SYSDA
//*
//CATLG1   DD DSN=AAF.S.OPER4,                   
//         DISP=(NEW,CATLG,DELETE),                               
//         DCB=(DSORG=PS,LRECL=133,BLKSIZE=1330,RECFM=FB),                    
//         VOL=SER=DISCO1,SPACE=(CYL,(4,1),RLSE),UNIT=SYSDA
//*
Leia Mais

domingo, abril 05, 2026

Transferir um programa via SYSTRANS para o Adabas

Encontrou um código essencial no GitHub da Software AG e precisa levá-lo para o seu ambiente Natural/Adabas? Se o programa for curto, o "copiar e colar" resolve. No entanto, quando lidamos com fontes de 500 linhas ou mais, o processo manual torna-se arriscado e ineficiente. Para garantir que o objeto seja catalogado, compilado e executado corretamente sem perda de dados, o Natural exige um processo formal de importação. Abaixo, detalhamos as rotas mais seguras para realizar essa transição, focando especialmente no uso do SYSTRANS.

DEFINE DATA LOCAl
1 CRUISE2VIEW VIEW OF CRUISE2
1 RECCOUNT (N5)
END-DEFINE
/* delete all records from CRUISE2
R1. READ CRUISE2VIEW
  DELETE
  COMPUTE RECCOUNT = RECCOUNT + 1
END-READ
*
END TRANSACTION
*
WRITE 'OK - all records deleted in CRUISE2:' RECCOUNT
*
END 

Para que o utilitário SYSTRANS processe com sucesso os programas que estão no seu notebook, não basta apenas ter o código fonte; é necessário garantir que o arquivo esteja formatado abaixo

*H**ENAT4104202603301403199MVS/ESA                          0AE B
*C**                                SUPORTE2A@CONVEM                        F
*D01NAT4104F SUPORTE2A@CONVEM                        DBA1055 DBA1055 6     13S
*D02            2017020912011802017020912011800000003845                   
*D03MVS/ESA COMPLETENCF414                                                
*D04                                                                      
*S**0010DEFINE DATA LOCAl
*S**00201 CRUISE2VIEW VIEW OF CRUISE2
*S**00301 RECCOUNT (N5)
*S**0040END-DEFINE
*S**0050* delete all records from CRUISE2
*S**0060R1. READ CRUISE2VIEW
*S**0070  DELETE
*S**0080  COMPUTE RECCOUNT = RECCOUNT + 1
*S**0090END-READ
*S**0100*
*S**0110END TRANSACTION
*S**0120*
*S**0130WRITE 'OK - all records deleted in CRUISE2:' RECCOUNT
*S**0140*
*S**0150END
*E 

A mágica esta no começo D01NAT4104F é onde vai estar a versão do natural - F esta falando que vamos carregar um programa - na linha de cima tem um F também - ao final tem que ir *E para passar ao SYSTRANS que o programa acabou

*H**ENAT4104202603301403199MVS/ESA                          0AE B
*C**                                SUPORTE2A@CONVEM                        F
*D01NAT4104F SUPORTE2A@CONVEM                        DBA1055 DBA1055 6     13S

Feito o FTP para o mainframe

claudemar@Claudemar:~$ cd Documentos
claudemar@Claudemar:~/Documentos$ ftp 12.1.40.5
Connected to 12.1.40.5.
220-AAFFTP1 IBM FTP CS V1R8 at JES2, 16:58:21 on 2026-04-05.
220 Connection will close if idle for more than 15 minutes.
Name (12.1.40.5:claudemar): DBA1055
331 Send password please.
Password: 
230 DBA01055 is logged on.  Working directory is "DBA01055.".
Remote system type is MVS.
ftp> cd ..
250 "" is the working directory name prefix.
ftp> 
ftp> 
ftp> put A@CONVEM.txt AAB.S.UNLOAD.DET2
local: A@CONVEM.txt remote: AAB.S.UNLOAD.DET2
229 Entering Extended Passive Mode (|||3115|)
125 Storing data set AAB.S.UNLOAD.DET2
100% |*************************************************************************************************************************************************************************************************|   852        7.88 MiB/s    --:-- ETA
250 Transfer completed successfully.
852 bytes sent in 00:00 (13.37 KiB/s)
ftp>  

Ficou assim

                                                                      R=00000001                                                    
DSN=AAB.S.UNLOAD.DET2                                   VOL=PRD908 UNIT=4579                                                        
....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8....+....9....+....0....+....1....+....2....+....3..
*H**ENAT4104202603301403199MVS/ESA                          0AE B                                                                   
*C**                                SUPORTE2A@CONVEM                        P                                                       
*D01NAT4104P SUPORTE2A@CONVEM                        DBA1055 DBA1055 6     13S                                                      
*D02            2017020912011802017020912011800000003845                                                                            
*D03MVS/ESA COMPLETENCF414                                                                                                          
*D04                                                                                                                                
*S**0010DEFINE DATA LOCAl                                                                                                           
*S**00201 CRUISE2VIEW VIEW OF CRUISE2                                                                                               
*S**00301 RECCOUNT (N5)                                                                                                             
*S**0040END-DEFINE                                                                                                                  
*S**0050* delete all records from CRUISE2                                                                                           
*S**0060R1. READ CRUISE2VIEW                                                                                                        
*S**0070  DELETE                                                                                                                    
*S**0080  COMPUTE RECCOUNT = RECCOUNT + 1                                                                                           
*S**0090END-READ                                                                                                                    
*S**0100*                                                                                                                           
*S**0110END TRANSACTION                                                                                                             
*S**0120*                                                                                                                           
*S**0130WRITE 'OK - all records deleted in CRUISE2:' RECCOUNT                                                                       
*S**0140*                                                                                                                           
*S**0150END  
*E
 COMPDS0400-D --- End of Data ---   

JCL para rodar o SYSTRANS

//AABDNATB JOB (AACP,SCHD),MASTER,CLASS=S,MSGCLASS=A TYPRUN=HOLD   
//*UQ ALLOW                                                       
//* ------------------------------------------------------------- 
//*           TRANSFERENCIA PARA A BIBLIOTECA SUPORTE1            
//* ESTE JOB COPIA PROGRAMAS DE UM ARQUIVO PS P/ UMA BIB. NATURAL 
//* ------------------------------------------------------------- 
//NATUNLD EXEC NATURAL,PARM1='SYS=D,MT=0,IM=D,INTENS=1'          
//CMWKF01 DD DSN=AAB.S.UNLOAD.DET2,DISP=OLD                       
//CMPRINT DD SYSOUT=A                                             
//DADOS    DD *                                                   
L                                                                 
N|Y|Y|N|Y                                                         
*                                                                 
Y                                                                 
MIGRACAO                                                          
FIN                                                               
/*                                                                
//SYSIN   DD *                                                    
LOGON SYSTRANS                                                    
MENU                                                              
/* 

Rodou ok

1Logon accepted to library SUPORTE2.            
1NEXT LOGON SYSTRANS                            
1Function / CMD                                 
 DATA L                                         
1                                               
 General Load Options                           
0User-Defined Conversion Table ....   N  (Y/N/F)
 Report ...........................   Y  (Y/N)  
 Translate Sources to Upper Case ..   N  (Y/N)  
 Save Restart Information .........   N  (Y/N)  
 Modify Library Names .............   N  (Y/N)  
0Use Entire Connection work file ..   N  (Y/N)  
 Convert Data Area Sources ........   N  (Y/N)  
 DATA N|Y|Y|N|Y                                 
1Objects to be loaded / CMD                     
 DATA *                                         
1                                               
 Load All Objects                               
0All objects on work file 1 will be loaded|     
0Replace ............................ N  (Y/N)  
 DATA Y                                         
1                                               
 Modify Library Names                           
-Old Library Name .................   *         
-Old Library Name .................   *                                          
 New Library Name .................   *_______                                   
 DATA MIGRACAO                                                                   
119:12:56             ***** NATURAL SYSTRANS UTILITY *****            2026-04-05 
 User AABDNATB                  - Load Objects -                                 
0Object   Object      Src Vers.  Target   Date/Time of     Op.-     Remark       
 Name     Type        Cat Level  Library  Save             System                
 -------- ----------- --- ------ -------- ---------------- -------- ------------ 
0A@CONVEM Program     Src 4.1.4  MIGRACAO 2017-02-09 12:01 MVS/ESA  Replaced  
1PAG      2                                                   26-04-05  19:12:56 
0Objects loaded successfully                                                     
1Objects to be loaded / CMD                                                      
 DATA FIN                                                                        
119:12:56              ***** NATURAL SYSTRANS UTILITY *****           2026-04-05 
 User AABDNATB                 - Load Objects -                                  
                      Statistical Report of loaded Objects                       
        Global Data Area .................       0                               
        Local Data Area ..................       0                               
        Parameter Data Area ..............       0                               
        Programs .........................       1                               
        Subprograms ......................       0                               
        Subroutines ......................       0                               
        Helproutines .....................       0                               
        Copycodes ........................       0                               
        Texts ............................       0                              
        Dialogs ..........................       0                              
        Classes ..........................       0                              
        Maps .............................       0                              
        Functions ........................       0                              
0       Total Command Processors .........       0                              
        Total Natural Objects ............       1                              
        Total Predict Processing Rules ...       0                              
        Total DDMs .......................       0                              
        Total Adabas FDTs ................       0                              
        Total Error Message Texts ........       0                              
119:12:56              ***** NATURAL SYSTRANS UTILITY *****           2026-04-05
 User AABDNATB                 - Load Objects -                                 
-       Total Objects loaded .............       1                              
-                                                                               
       *** TRANSFER Load Process has been terminated successfully ***           
1NAT9995 Natural session terminated normally.                                   
UQS0009 - END OF DATA SET.                 

Carregou o programa A@CONVEM na biblioteca

 19:17:21               ***** NATURAL LIST COMMAND *****              05/04/2026                                                    
 User DBA1055             - LIST Objects in a Library -         Library MIGRACAO                                                    
                                                                                                                                    
 Cmd  Name       Type         S/C  SM Version  User ID    Date        Time                                                          
 ---  @>_______  *__________  *__  *  *______  *________  *__________ *________                                                     
 __   A@CONVEM   Program      S    S  4.1.04   DBA1055    2017-02-09  12:01:18                                                      
 __   MIDELEPN   Subprogram   S/C  S  4.1.04   DBA77057   2026-03-26  12:46:26                                                      
 __   MIEXC7PN   Program      S/C  S  4.1.04   DBA77057   2026-03-26  12:46:26                                                      
 __   MIEXC8PN   Program      S/C  S  4.1.04   DBA77057   2026-03-26  12:46:26                                                      
 __   MIEXC9PN   Program      S/C  S  4.1.04   DBA77057   2026-03-26  12:46:26                                                      
 __   MIEX99PN   Program      S    S  4.1.04   DBA77057   2026-03-25  21:36:24                                                      
 __   MIINITNN   Subprogram   S/C  S  4.1.04   DBA77057   2026-03-26  12:48:51                                                      
 __   MIJOBAPN   Program      S    S  4.1.04   DBA77057   2026-03-25  21:39:59                                                      
 __   MIJOBFNN   Program      S    S  4.1.04   DBA77057   2026-03-25  21:40:50                                                      
 __   MIJOBIPN   Program      S    S  4.1.04   DBA77057   2026-03-25  21:41:23                                                      
 __   MITABJPN   Program      S    S  4.1.04   DBA77057   2026-03-25  21:43:23                                                      
 __   MITABPN    Program      S    S  4.1.04   DBA77057   2026-03-25  21:44:25                                                      
 __   MITABWPN   Program      S    S  4.1.04   DBA77057   2026-03-25  21:45:28                                                      
 __   MITAB2PN   Program      S    S  4.1.04   DBA77057   2026-03-25  21:42:31                                                      
                                                               14 Objects found                                                     
 Command ===>                                                                                                                       
                                                                                                                                    
                                                                                                                                    
 Top of List.                                                                                                                       
                                                                                                                                    
 Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---                                                    
       Help  Print Exit  Sort        --    -     +     ++          >     Canc  

Editando o programa, ele esta no nosso mainframe

>                                       > +  Program     A@CONVEM Lib MIGRACAO  
All    ....+....1....+....2....+....3....+....4....+....5....+.Mode Structured. 
  0010 DEFINE DATA LOCAL                                                        
  0020 1 CRUISE2VIEW VIEW OF CRUISE2                                            
  0030 1 RECCOUNT (N5)                                                          
  0040 END-DEFINE                                                               
  0050 * delete all records from CRUISE2                                        
  0060 R1. READ CRUISE2VIEW                                                     
  0070   DELETE                                                                 
  0080   COMPUTE RECCOUNT = RECCOUNT + 1                                        
  0090 END-READ                                                                 
  0100 *                                                                        
  0110 END TRANSACTION                                                          
  0120 *                                                                        
  0130 WRITE 'OK - all records deleted in CRUISE2:' RECCOUNT                    
  0140 *                                                                        
  0150 END                                                                       
Leia Mais

terça-feira, março 24, 2026

Transferência de Objetos com SYSTRANS

Você pode utilizar o SYSTRANS para transferir objetos do ambiente Natural/Adabas de uma plataforma para outra, como por exemplo do mainframe para Linux ou Windows. Por meio dele é possível transportar programas, mapas, DDMs e até mesmo estruturas relacionadas ao banco de dados, como os FDTs do Adabas. Isso torna o processo muito mais seguro e padronizado, evitando erros que poderiam ocorrer caso essa transferência fosse feita manualmente. Muitas vezes também é necessário fazer a atualização de versões de objetos. É comum que determinados programas sejam constantemente alterados em um dos ambientes — por exemplo, no ambiente web — e essas alterações precisam ser transferidas para o outro ambiente para que ambos permaneçam sincronizados. Manter essa correlação entre os ambientes é extremamente importante para evitar inconsistências, principalmente quando existem rotinas críticas que são utilizadas em produção.

Esse fluxo garante que os dois ambientes permaneçam alinhados, reduzindo riscos de inconsistência entre versões e facilitando o controle das alterações feitas pelos desenvolvedores.

Simulando

Temos um programa chamado DBAPMENU que queremos transferir para outro mainframe/ou outro Linux Natural - no mainframe usamos esse JCL para fazer o backup
//AAFSNATB JOB (AACP,SCHD),SCHED,CLASS=S,MSGCLASS=A TYPRUN=HOLD        
//*UQ ALLOW                                                            
//* ------------------------------------------------------------------ 
//*           Transferencia do mainframe para o micro                  
//* ------------------------------------------------------------------ 
//* ESTE JOB COPIA PROGRAMAS/SUBPROGRAMAS PARA UM ARQUIVO PS UNLOAD    
//* ------------------------------------------------------------------ 
//NATUNLD EXEC NATSIAF,PARM1='SYS=D,MT=0,IM=D,INTENS=1'                
//CMWKF01 DD DSN=AAC.S.WORK01,DISP=OLD                                 
//CMWKF03 DD DSN=AAF.S.CMWKF03,DISP=OLD                                
//CMPRINT DD SYSOUT=A                                                  
//DADOS    DD *             
U                           
N|N|N|Y|Y|N|N               
N                           
SUPORTE2|DBAPMENU|*|SUPORTE2
FIN                         
/*                          
//SYSIN   DD *              
LOGON SYSTRANS              
MENU                        
/*

Rodou o SYSTRANS Unload

1Logon accepted to library SUPORTE2.          
1NEXT LOGON SYSTRANS                          
1Logon accepted to library SYSTRANS.          
1NEXT MENU                                    
1Function / CMD                               
 DATA U                                       
1                                             
 General Unload Options                       
0Conversion EBCDIC ===> ASCII .....   N  (Y/N)
 User-Defined Conversion Table ....   N  (Y/N)
 Substitute Line References .......   N  (Y/N)
 Report ...........................   Y  (Y/N)
 Include Line Numbers .............   N  (Y/N)
 Use Work File Input ..............   N  (Y/N)
 Use Selection List ...............   N  (Y/N)
0Use Entire Connection work file...   N  (Y/N)
 DATA N|N|N|Y|Y|N|N                           
1                                             
 Objects to be unloaded / CMD                 
 DATA N                                       
1                                             
 Unload Natural Objects                                                         
0S/C Type ....................... S                                             
 From Library ................... ________                                      
 Object Name .................... *_______                                      
 Object Type .................... *______________                               
 To Library ..................... ________                                      
 Data Area Format ............... * (*/O/N)                                     
 DATA SUPORTE2|DBAPMENU|*|SUPORTE2                                              
111:42:15             ***** NATURAL SYSTRANS UTILITY *****            2026-03-24
 User AAFSNATB                 - Unload Objects -                               
0Object   Object      Src  Vers.  Target   Date/Time of     User ID  Operating  
 Name     Type        Cat  Level  Library  Save             of save  System     
 -------- ----------- ---  ------ -------- ---------------- -------- ---------  
0DBAPMENU Program     Src  4.1.4  SUPORTE2 2025-07-09 14:15 DBAP048  MVS/ESA    
1                                                                               
 Objects to be unloaded / CMD                                                   
 DATA FIN                                                                       
111:42:15              ***** NATURAL SYSTRANS UTILITY *****           2026-03-24
 User AAFSNATB                - Unload Objects -                                
                      Statistical Report of unloaded Objects                    
        Global Data Area .................       0                              
        Local Data Area ..................       0                              
        Parameter Data Area ..............       0                              
        Programs .........................       1                              
        Subprograms ......................       0                              
        Subroutines ......................       0                              
        Helproutines .....................       0                              
        Copycodes ........................       0                              
        Texts ............................       0                              
        Dialogs ..........................       0                              
        Classes ..........................       0                              
        Maps .............................       0                              
        Functions ........................       0                              
0       Total Command Processors .........       0                              
        Total Natural Objects ............       1                              
        Total Predict Processing Rules ...       0                              
        Total DDMs .......................       0                              
        Total Adabas FDTs ................       0                              
        Total Error Message Texts ........       0                              
111:42:15              ***** NATURAL SYSTRANS UTILITY *****           2026-03-24
 User AAFSNATB                - Unload Objects -                                
-       Total Objects unloaded ...........       1                              
-                                                                     
      *** TRANSFER Unload Process has been terminated successfully ***
1NAT9995 Natural session terminated normally.                         
UQS0009 - END OF DATA SET.                                                                                                 

Vamos ver o dataset - o programa esta lá

                                                                      R=00000001
DSN=AAC.S.WORK01                                        VOL=PRD305 UNIT=1522    
....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
*H**ENAT4104202603241142152MVS/ESA                          0AE B               
*C**                                SUPORTE2DBAPMENU                        F   
*D01NAT4104F SUPORTE2DBAPMENU                        DBAP048 DBAP048 4     23R  
*D02            2025070914153122025070914153120000002651                        
*D03MVS/ESA COMPLETENCF414                                                      
*D04                                                                            
*S**0010* ==================================================================== *
*S**0020* FUNCAO: MENU DE OPCOES PARA O DBA ADABAS                             *
*S**0030*  AUTOR: CLAUDEMAR MARTINS                                            *
*S**0040*  DATA : 08/02/2021                                                   *
*S**0050* ==================================================================== *
*S**0060DEFINE DATA LOCAL                                                       
*S**00701 #ARQ1 (N3)                                                            
*S**0080END-DEFINE                                                              
*S**0090* ==================================================================== *
*S**0100FORMAT KD=ON                                                            
*S**0110SET KEY                                                                 
*S**0120  TREQ        NAMED ' '   /* NOVAS PFS /*                               
*S**0130PF3  = PGM  NAMED 'EXIT'                                                
*S**0140PF12 = PGM  NAMED 'QUIT'                                                
*S**0150* ==================================================================== *
*S**0160REPEAT                                                                  
*S**0170  INPUT (IP=OFF SG=OFF AD=MIL'_')                                       
*S**0180    02T '-' (78)                                                        
*S**0190    /02T *USER                                                          
*S**0200    20T 'SUPERINTENDENCIA DA GESTAO DA INFORMACAO' (I)                  
*S**0210    72T *PROGRAM                                                        
*S**0220    /02T *TIME(AL=8) 11T '-' (60) 72T  *DATE                            
*S**0230    /72T *LIBRARY-ID /                                                  
*S**0240    /02T '-' (78)                                                       
*S**0250/8T '10 - MONITORANDO ESPACOS '(I) 47T' 80 - CALCULO DO ESPACO      '(I)
*S**0260/8T '20 - MIGRATE FILES ADABAS'(I) 47T' 90 - MANUTENCAO NOS FILES   '(I)
*S**0270/8T '30 - BACKUP BANCO/FILE   '(I) 47T'100 - PROCEDIMENTOS HISTORICO'(I)
*S**0280/8T '40 - LIMPAR CHECKPOINTS  '(I) 47T'110 - ALOCACAO DOS FILES     '(I)
*S**0290/8T '50 - ADAREP DOS BANCOS   '(I) 47T'120 - LIMPANDO BUFFER POOL   '(I)
*S**0300/8T '60 - REORDB/REORFILE     '(I) 47T'130 - RESTRUTURACAO          '(I)
*S**0310/8T '70 - NOMES BANCOS PREDICT'(I) 47T'                             '(I)
*S**0320    /2T'-' (78)                                                         
*S**0330* ==================================================================== *
*S**0340    // 27T'DIGITE A OPCAO DESEJADA'(YE) #ARQ1(AD=MIL'_')                

Essa é a biblioteca que vou restaurar o DBAPMENU - poderia ser em um ambiente em outro mainframe/outro linux

 11:46:18               ***** NATURAL LIST COMMAND *****              24/03/2026
 User DBAP048             - LIST Objects in a Library -         Library SUPORTE1
                                                                                
 Cmd  Name       Type         S/C  SM Version  User ID    Date        Time      
 ---  *________  *__________  *__  *  *______  *________  *__________ *________ 
 __   VIEW01     Program      S    R  4.1.04   DBAP048    2025-08-14  10:26:45  
 __   VIEW02     Program      S/C  S  4.1.04   DBAP048    2025-08-14  12:33:03  
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                2 Objects found 
 Top of List.                                                                   
 Command ===>                                                                   
 Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
       Help  Print Exit  Sort        --    -     +     ++          >     Canc   

Vamos restaura o programa que foi salvo no dataset via SYSTRANS

//AAFSNATB JOB (AACP,SCHD),KATIA,CLASS=S,MSGCLASS=A TYPRUN=HOLD        
//*UQ ALLOW                                                            
//* -------------------------------------------------------------      
//*           TRANSFERENCIA PARA A BIBLIOTECA SUPORTE1                 
//* -------------------------------------------------------------      
//* ESTE JOB COPIA PROGRAMAS DE UM ARQUIVO PS P/ UMA BIB. NATURAL      
//* -------------------------------------------------------------      
//NATUNLD EXEC NATURAL,PARM1='SYS=D,MT=0,IM=D,INTENS=1'                
//CMWKF01 DD DSN=AAB.S.UNLOAD.DET2,DISP=OLD                            
//CMPRINT DD SYSOUT=A                                                  
//DADOS    DD *
L              
N|Y|Y|N|Y      
*              
Y              
SUPORTE1       
FIN            
/*             
//SYSIN   DD * 
LOGON SYSTRANS 
MENU           
/*             

Restaurou

1Logon accepted to library SUPORTE2.            
1NEXT LOGON SYSTRANS                            
1Logon accepted to library SYSTRANS.            
1NEXT MENU                                      
1Function / CMD                                 
 DATA L                                         
1                                               
 General Load Options                           
0User-Defined Conversion Table ....   N  (Y/N/F)
 Report ...........................   Y  (Y/N)  
 Translate Sources to Upper Case ..   N  (Y/N)  
 Save Restart Information .........   N  (Y/N)  
 Modify Library Names .............   N  (Y/N)  
0Use Entire Connection work file ..   N  (Y/N)  
 Convert Data Area Sources ........   N  (Y/N)  
 DATA N|Y|Y|N|Y                                 
1Objects to be loaded / CMD                     
 DATA *                                         
1                                               
 Load All Objects                               
0All objects on work file 1 will be loaded|     
0Replace ............................ N  (Y/N)                                  
 DATA Y                                                                         
1                                                                               
 Modify Library Names                                                           
-Old Library Name .................   *                                         
 New Library Name .................   *_______                                  
 DATA SUPORTE1                                                                  
111:47:20             ***** NATURAL SYSTRANS UTILITY *****            2026-03-24
 User AAFSNATB                  - Load Objects -                                
0Object   Object      Src Vers.  Target   Date/Time of     Op.-     Remark      
 Name     Type        Cat Level  Library  Save             System               
 -------- ----------- --- ------ -------- ---------------- -------- ------------
0DBAPMENU Program     Src 4.1.4  SUPORTE1 2025-07-09 14:15 MVS/ESA  Loaded      
1PAG      2                                                   26-03-24  11:47:19
0Objects loaded successfully                                                    
1Objects to be loaded / CMD                                                     
 DATA FIN                                                                       
111:47:20              ***** NATURAL SYSTRANS UTILITY *****           2026-03-24
 User AAFSNATB                 - Load Objects -                                 
                      Statistical Report of loaded Objects                      
        Global Data Area .................       0                              
        Local Data Area ..................       0                              
        Parameter Data Area ..............       0                              
        Programs .........................       1                              
        Subprograms ......................       0                              
        Subroutines ......................       0                              
        Helproutines .....................       0                              
        Copycodes ........................       0                              
        Texts ............................       0                              
        Dialogs ..........................       0                              
        Classes ..........................       0                              
        Maps .............................       0                              
        Functions ........................       0                              
0       Total Command Processors .........       0                              
        Total Natural Objects ............       1                              
        Total Predict Processing Rules ...       0                              
        Total DDMs .......................       0                              
        Total Adabas FDTs ................       0                              
        Total Error Message Texts ........       0                              
111:47:20              ***** NATURAL SYSTRANS UTILITY *****           2026-03-24
 User AAFSNATB                 - Load Objects -                                 
-       Total Objects loaded .............       1                              
-                                                                    
       *** TRANSFER Load Process has been terminated successfully ***
1NAT9995 Natural session terminated normally.                        
UQS0009 - END OF DATA SET.                                           

Restaurou

 11:49:02               ***** NATURAL LIST COMMAND *****              24/03/2026
 User DBAP048             - LIST Objects in a Library -         Library SUPORTE1
                                                                                
 Cmd  Name       Type         S/C  SM Version  User ID    Date        Time      
 ---  *________  *__________  *__  *  *______  *________  *__________ *________ 
 ed   DBAPMENU   Program      S    R  4.1.04   DBAP048    2025-07-09  14:15:31  
 __   VIEW01     Program      S    R  4.1.04   DBAP048    2025-08-14  10:26:45  
 __   VIEW02     Program      S/C  S  4.1.04   DBAP048    2025-08-14  12:33:03  
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                3 Objects found 
 Top of List.                                                                   
 Command ===>                                                                   
 Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
       Help  Print Exit  Sort        --    -     +     ++          >     Canc   

Editando - esta lá o programa

 >                                       > +  Program     DBAPMENU Lib SUPORTE1 
 Top    ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
   0010 * ==================================================================== *
   0020 * FUNCAO: MENU DE OPCOES PARA O DBA ADABAS                             *
   0030 *  AUTOR: CLAUDEMAR MARTINS                                            *
   0040 *  DATA : 08/02/2021                                                   *
   0050 * ==================================================================== *
   0060 DEFINE DATA LOCAL                                                       
   0070 1 #ARQ1 (N3)                                                            
   0080 END-DEFINE                                                              
   0090 * ==================================================================== *
   0100 FORMAT KD=ON                                                            
   0110 SET KEY                                                                 
   0120   TREQ        NAMED ' '   /* NOVAS PFS /*                               
   0130 PF3  = PGM  NAMED 'EXIT'                                                
   0140 PF12 = PGM  NAMED 'QUIT'                                                
   0150 * ==================================================================== *
   0160 REPEAT                                                                  
   0170   INPUT (IP=OFF SG=OFF AD=MIL'_')                                       
   0180     02T '-' (78)                                                        
   0190     /02T *USER                                                          
   0200     20T 'SUPERINTENDENCIA DA GESTAO DA INFORMACAO' (I)                  
   0210     72T *PROGRAM                                                        
   0220     /02T *TIME(AL=8) 11T '-' (60) 72T  *DATE                            
   0230     /72T *LIBRARY-ID /                                                  
   0240     /02T '-' (78)                                                       
   0250 /8T '10 - MONITORANDO ESPACOS '(I) 47T' 80 - CALCULO DO ESPACO      '(I)
   0260 /8T '20 - MIGRATE FILES ADABAS'(I) 47T' 90 - MANUTENCAO NOS FILES   '(I)
   0270 /8T '30 - BACKUP BANCO/FILE   '(I) 47T'100 - PROCEDIMENTOS HISTORICO'(I)
   0280 /8T '40 - LIMPAR CHECKPOINTS  '(I) 47T'110 - ALOCACAO DOS FILES     '(I)
   0290 /8T '50 - ADAREP DOS BANCOS   '(I) 47T'120 - LIMPANDO BUFFER POOL   '(I)
   0300 /8T '60 - REORDB/REORFILE     '(I) 47T'130 - RESTRUTURACAO          '(I)
   0310 /8T '70 - NOMES BANCOS PREDICT'(I) 47T'                             '(I)
   0320     /2T'-' (78)                                                         
   0330 * ==================================================================== *
   0340     // 27T'DIGITE A OPCAO DESEJADA'(YE) #ARQ1(AD=MIL'_')                
   0350     // 30T'TECLE PF3 PARA SAIR'(I)                                      
   0360 * ==================================================================== *
   0370   IF #ARQ1 EQ  10   FETCH 'DBAMCS10'                                    
   0380   IF #ARQ1 EQ  20   FETCH 'DBAMCS20'                                    
   0390   IF #ARQ1 EQ  30   FETCH 'DBAMCS30'                                    
   0400   IF #ARQ1 EQ  40   FETCH 'DBAPJ879'          /* 'DBAMCS80'             
        ....+....1....+....2....+....3....+....4....+....5....+... S 54   L 21  
Leia Mais

segunda-feira, dezembro 29, 2025

Natural System Variables

No desenvolvimento em Natural/Adabas, as variáveis de sistema desempenham um papel essencial no controle do ambiente de execução, no registro de informações internas do programa e no suporte a rotinas operacionais. Diferente das variáveis declaradas pelo programador, as variáveis de sistema são fornecidas pelo próprio Natural e já vêm preenchidas automaticamente, permitindo ao desenvolvedor acessar dados do usuário, do programa, da sessão, do terminal, do banco de dados e do ambiente de execução. Essas variáveis são amplamente utilizadas em rotinas de auditoria, logs, mensagens de erro, validações funcionais e monitoramento de execução. Entre elas, encontramos variáveis relacionadas ao usuário, como USER, USER-NAME e GROUP, que ajudam a identificar quem está executando o programa; variáveis de contexto do sistema, como LIBRARY-ID, PROGRAM e LEVEL; e variáveis de operação, como CPU-TIME, COUNTER, DEVICE e HARDCOPY, que permitem acompanhar aspectos técnicos da sessão.

Variaveis do Natural

Abaixo estão as variaveis do Natural

15:55:24               ***** NATURAL HELP UTILITY *****              06/06/2016
                         - Natural System Variables -

------------------------------------------------------------------------------

(AD) *APPLIC-ID          (EN) *ERROR-NR            (LV) *LEVEL
(AN) *APPLIC-NAME        (ET) *ERROR-TA            (LB) *LIBRARY-ID
(CM) *COM                (ED) *ETID                (LI) *LINE
(CV) *CONVID             (GR) *GROUP               (LC) *LINE-COUNT
(CO) *COUNTER            (HC) *HARDCOPY            (LS) *LINESIZE
(CP) *CPU-TIME           (HW) *HARDWARE            (LL) *LOG-LS
(CR) *CURSOR             (HO) *HOSTNAME            (LP) *LOG-PS
(CC) *CURS-COL           (IN) *INIT-ID             (MC) *MACHINE-CLASS
(CF) *CURS-FIELD         (IP) *INIT-PROGRAM        (NA) *NATVERS
(CL) *CURS-LINE          (IU) *INIT-USER           (NE) *NET-USER
(DA) *DATA               (IS) *ISN                 (NU) *NUMBER
(DV) *DEVICE             (LG) *LANGUAGE            (OC) *OCCURRENCE
(EL) *ERROR-LINE         (LE) *LENGTH              (OP) *OPSYS

------------------------------------------------------------------------------

Code .. __   ('.' to Exit)
Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
      Help  Menu  Exit                    -     +                       Canc

Continuação

15:55:37               ***** NATURAL HELP UTILITY *****              06/06/2016
                         - Natural System Variables -

------------------------------------------------------------------------------

(OS) *OS                 (SL) *STEPLIB
(OV) *OSVERS             (SR) *SUBROUTINE
(PS) *PAGESIZE           (TB) *THIS-OBJECT
(PN) *PAGE-NUMBER        (TP) *TP
(PU) *PARM-USER          (TY) *TPSYS
(PT) *PATCH-LEVEL        (TV) *TPVERS
(PF) *PF-KEY             (UI) *UI
(PA) *PF-NAME            (US) *USER
(PI) *PID                (UN) *USER-NAME
(PG) *PROGRAM            (WL) *WINDOW-LS
(SI) *SCREEN-IO          (WC) *WINDOW-POS
(ST) *SERVER-TYPE        (WP) *WINDOW-PS
(SU) *STARTUP

------------------------------------------------------------------------------

Code .. __   ('.' to Exit)
Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
      Help  Menu  Exit                    -     +                       Canc

Write das variaveis

 *APPLIC-ID     =  NATURAL                                                      
 *ERROR-NR      =         0                                                      
 *LEVEL         =    1                                                           
 *APPLIC-NAME   =  SUPORTE  -  NATURAL 2                                         
 *ERROR-TA      =                                                                
 *LIBRARY-ID    =  NATURAL
 *ETID          =                                                                
 *LINE          =           50                                                   
 *CONVID        =            0                                                   
 *GROUP         =  DBA
 *LINE-COUNT    =      14                                                        
 *HARDCOPY      =  PRINT252                                                      
 *LINESIZE      =        80                                                      
 *CPU-TIME      =          115                                                   
 *HARDWARE      =  2098                                                          
 *LOG-LS        =   250                                                          
 *CURSOR        =     1004                                                       
 *HOSTNAME      =  CPAC                                                          
 *LOG-PS        =    60                                                          
 *CURS-COL      =     4 
 *CONVID        =            0                                                   
 *GROUP         =  DBA
 *LINE-COUNT    =      14                                                        
 *HARDCOPY      =  PRINT252
 *LINESIZE      =        80                                                      
 *MACHINE-CLASS =  MAINFRAME                                                     
 *CURS-FIELD    =            0                                                   
 *INIT-PROGRAM  =  NCF411                                                        
 *NATVERS       =  04.01.04                                                      
 *CURS-LINE     =     1                                                          
 *INIT-USER     =  DBA4022
 *DATA          =    -1                                                          
 *DEVICE        =  VIDEO                                                         
 *LANGUAGE      =     1                                                          
 *ERROR-LINE    =      0
 *OS            = z/OS                                                          
 *OSVERS        = 01.10.00                                                      
 *PAGESIZE      =       24                                                      
 *PAGE-NUMBER   =      1                                                        
 *PATCH-LEVEL   = 8                                                             
 *PF-KEY        = ENTR                                                          
 *PF-NAME       =                                                               
 *PID           = 3887861212413514                                              
 *PROGRAM       = CSA032                                                        
 *SCREEN-IO     = X                                                             
 *SERVER-TYPE   =                                                               
 *STARTUP       = MAINMENU                                                      
 *STEPLIB       = SYSTEM                                                        
 *SUBROUTINE    =                                                               
 *USER          = DBA4022                                                       
 *USER-NAME     = DBA ADABAS 4022
 *WINDOW-LS     =   80                                                          
 *WINDOW-POS    =       0                                                       
 *WINDOW-PS     =   24 

Natural System Variables - Datas

Variaveis de data;

 16:33:17               ***** NATURAL HELP UTILITY *****              19/01/2023
                          - Natural System Variables -                          
                                                                                
 ------------------------------------------------------------------------------ 
    Date Variables:                              Time Variables:                
                                                                                
      (DD) *DATD      (4D) *DAT4D                  (TD) *TIMD                   
      (DE) *DATE      (4E) *DAT4E                  (TE) *TIME                   
      (DI) *DATI      (4I) *DAT4I                  (TS) *TIMESTMP               
      (DJ) *DATJ      (4J) *DAT4J                  (TO) *TIME-OUT               
      (DU) *DATU      (4U) *DAT4U                  (TN) *TIMN                   
      (DG) *DATG      (4V) *DATV                   (TX) *TIMX                   
      (DN) *DATN      (4S) *DATVS                                               
      (DX) *DATX                                                                
                                                                                
                                                                                
                                                                                
    (GE) General information                                                    
                                                                                
 ------------------------------------------------------------------------------ 
                                                                                
 Code .. dd   ('.' to Exit)                                                     
 Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
       Help  Menu  Exit                    -     +                       Canc

Date Variables

 *DATD         =  15.03.23                                                      
 *DATE         =  15/03/23                                                      
 *DATI         =  23-03-15                                                      
 *DATJ         =  23074                                                         
 *DATU         =  03/15/23                                                      
 *DATG         =  15MARCO    2023                                               
 *DATN         =   20230315                                                     
 *DATX         =  15/03/23                                                      
 *DAT4D        =  15.03.2023                                                    
 *DAT4E        =  15/03/2023                                                    
 *DAT4I        =  2023-03-15                                                    
 *DAT4J        =  2023074                                                       
 *DAT4U        =  03/15/2023                                                    
 *DATV         =  15-MAR-2023                                                   
 *DATVS        =  15MAR2023                                                     
 *TIME         =  11:22:27.3                                                    
 *TIMESTMP     =  DCFFD13B25826601                                              
 *TIME-OUT     =       0                                                        
 *TIMN         =   1122273                                                      
 *TIMX         =  11:22:27
Leia Mais