quarta-feira, abril 02, 2025

NAT0384 Explicit format specification required

Ao tentar alterar e catalogar um programa no Natural, me deparei com a seguinte mensagem de erro: (NAT0384 Explicit format specification required) pesquisei na help do natural e ele não fala muito como corrigir esse problema, depois de pesquisar e analisar encontrei a causa desse problema - duas variaveis nesse programa foram criadas em outro programa, que não estavam nesse programa especifico

 NAT0384 Explicit format specification required.                                
 >                                       > +  Program     CSA@MEN2 Lib DBA 
        ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
   0960 *                                                                       
   0970 FORMAT LS=100                                                           
   0980 SET KEY PF1='CSA@MEN'  PF3='CSA@MEN'                                    
   0990 MOVE #ANO-N  TO #AA                                                     
   1000 MOVE #MES-N  TO #MM                                                     
   1010 MOVE #DIA-N  TO #DD                                                     
   1020 *                                                                       
   1030 CALLNAT 'CSA@MEN' #POS #RC1                                             
   1040 *                                                                       
   1050 IF #RC1 NE 0                                                            
 E 1060    MOVE  'Senha nao confere'  TO +MENS                                  
   1070    MOVE  'X'                  TO +FLAG                                  
   1080    FETCH 'CSA@MEN'                                                      
   1090 END-IF                                                                  
   1100 *                                                                       
   1110 IF *GROUP EQ SCAN 'DBA' OR *GROUP = 'DBAGRUPO'                         
   1120   IGNORE                                                                
   1130 ELSE                                                                    
   1140   F1. FIND USER CSA-USER-USERID = #USER                                     
   1150     IF CSA-USER-CONF-COORDENADOR (F1.) NE 'S'                               
        ....+....1....+....2....+....3....+....4....+....5....+... S 349  L 96  

Isso ocorre pois essas duas variaveis +MENS e +FLAG estão em um outro programa - para conseguir catalogar o programa CSA@MEN2 acesso o primeiro programa chamado CSA@MENU onde as variaveis +MENS e +FLAG estão nele como variaveis independentes - rodo esse programa

 >  R                                    > +  Program     CSA@MENU  Lib DBA
        ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
   0210   2 #MM                      (N2)                                       
   0220   2 FILLER                   1X                                         
   0230   2 #AA                      (N4)                                       
   0240 INDEPENDENT                                                             
   0250 1 +MENS                      (A30)                                      
   0260 1 +FLAG                      (A1)                                       
   0270 END-DEFINE                                                              
   0280 *                                                                       
   0290 SET KEY PF3='FIN'                                                       
   0300 MOVE #AAN  TO #AA                                                       
   0310 MOVE #MMN  TO #MM                                                       
   0320 MOVE #DDN  TO #DD                                                       
   0330 *                                                                       
   0340 REPEAT                                                                  
   0350 *                                                                       
   0360 IF +FLAG EQ 'X'                                                         
   0370    RESET +FLAG                                                          
   0380 ELSE                                                                    
   0390    RESET +MENS                                                          
   0400 END-IF                                                                  
        ....+....1....+....2....+....3....+....4....+....5....+... S 57   L 21

Depois de rodar o programa CSA@MENU saiu com o comando %%

  ------------------------------------------------------------------------------
  DBA0055                    INFOPRINT SERVER MENU                      CSA@MENU
  07:43:32 ------------------------------------------------------------ 02/04/25
                                INFOPRINT SERVER                        DBA
                                                                                
  ------------------------------------------------------------------------------
                          10 - INFOPRINT LOG LIST                               
                          20 - DISPLAY PRINTER                                  
                          30 - PICS/TICS DISPONIVEL                             
                          40 - ALTERAR IP DA PICS                               
  ------------------------------------------------------------------------------
                                                                                
                           DIGITE A OPCAO DESEJADA %%_                          
                                                                                
                              TECLE PF3 PARA SAIR                               
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
 Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
                   EXIT                                                  QUIT

Edito o programa CSA@MEN2

 07:20:44                    *****  NATURAL  *****                    02/04/2025
 User DBA0055                    - Main Menu -                Library DBA
                                                                                
                                                                                
                    Function                                                    
                                                                                
                 _  Development Functions                                       
                 _  Development Environment Settings                            
                 _  Maintenance and Transfer Utilities                          
                 _  Debugging and Monitoring Utilities                          
                 _  Example Libraries                                           
                 _  Other Products                                              
                 _  Help                                                        
                 _  Exit Natural Session                                        
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
 Command ===> e CSA@MEN2                                                        
 Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
       Help        Exit                                                  Canc 

E dou o comando para catalogar o programa STOW

 > STOW                                 > +  Program     CSA@MEN2 Lib DBA                        
        ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
   1050 IF #RC1 NE 0                                   
   1060    MOVE  'Senha nao confere'  TO +MENS         
   1070    MOVE  'X'                  TO +FLAG         
   1080    FETCH 'CSA@MENU'                            
   1090 END-IF                                         
   1100 *                                              
   1110 IF *GROUP EQ SCAN 'CSA' OR *GROUP = 'CSAGRUP'
   1120   IGNORE                                   
   1130 ELSE                                       
   1140   F1. FIND USER USER-USERID = #USER        
   1150     IF USER-CONF-COORDENADOR (F1.) NE 'S'  
   1160       MOVE  'ACESSO NAO LIBERADO'  TO +MENS
   1170       MOVE  'X'                    TO +FLAG
   1180       FETCH 'CSA@MENU'   
   1190     END-IF              
   1200   END-FIND              
   1210 END-IF                  
   1220 *                       
   1230 *                       
   1240 MOVE #HH-S     TO  #HH-L
        ....+....1....+....2....+....3....+....4....+....5....+... S 349  L 105 

Agora aceitou - consegui catalogar

 >                                       > +  Program     CSA@MEN2 Lib DBA        
        ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
   1050 IF #RC1 NE 0                                                            
   1060    MOVE  'Senha nao confere'  TO +MENS                                  
   1070    MOVE  'X'                  TO +FLAG                                  
   1080    FETCH 'CSA@MENU'                                                      
   1090 END-IF                                                                  
   1100 *                                                                       
   1110 IF *GROUP EQ SCAN 'CSA' OR *GROUP = 'CSAGRUP'                         
   1120   IGNORE                                                                
   1130 ELSE                                                                    
   1140   F1. FIND USER USER-USERID = #USER                                     
   1150     IF USER-CONF-COORDENADOR (F1.) NE 'S'                               
   1160       MOVE  'ACESSO NAO LIBERADO'  TO +MENS                             
   1170       MOVE  'X'                    TO +FLAG                             
   1180       FETCH 'CSA@MENU'                                                   
   1190     END-IF                                                              
   1200   END-FIND                                                              
   1210 END-IF                                                                  
   1220 *                                                                       
   1230 *                                                                       
   1240 MOVE #HH-S     TO  #HH-L                             
        ....+....1....+....2....+....3....+....4....+....5....+... S 349  L 105 

0 comentários:

Enviar um comentário