domingo, abril 05, 2026

Transferir programas via SYSTRANS

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                                                                       

0 comentários:

Enviar um comentário