Page 1 of 1

writing in a output dataset

PostPosted: Fri Jun 05, 2020 3:07 pm
by samb01
Hello,

i used to run a rexx that write in a output which has been already cataloged, and it works (DISP=SHR)
But, when i run the rexx with an output dataset with DISP=(NEW,CATLG,), it doesn't work.
I have an empty output dataset even if i'am using the same rexx.

Jcl that works :


//VTS2     EXEC PGM=IKJEFT01,DYNAMNBR=30,REGION=5000K          
//SYSEXEC  DD DSN=REXX.LIB,DISP=SHR                              
//SYSTSPRT DD SYSOUT=*                                          
//IN       DD DSN=DATA.IN(0),DISP=SHR          
//* FICHIERS GDG ALRTVTS                                        
//OUT      DD DSN=DATA.OUT,DISP=SHR    
//SYSTSIN  DD *                                                
 %REXX01                                                      
//*                                                            
 


Jcl taht not works (empty output dataset)


//VTS2     EXEC PGM=IKJEFT01,DYNAMNBR=30,REGION=5000K          
//SYSEXEC  DD DSN=REXX.LIB,DISP=SHR                              
//SYSTSPRT DD SYSOUT=*                                          
//IN       DD DSN=DATA.IN(0),DISP=SHR          
//* FICHIERS GDG ALRTVTS                                        
//OUT      DD DSN=DATA.OUT(+1),DISP=(,CATLG),  
//         SPACE=(TRK,(1,1)),RECFM=FB,LRECL=133,BLKSIZE=27930
//SYSTSIN  DD *                                                
 %REXX01                                                      
//*              
 


and my rexx :


/*REXX*/                                                    
TRACE I                                                    
"EXECIO * DISKR IN (FINIS STEM DT."                        
  DO J = 1 TO DT.0                                          
       PTL.J  = SUBSTR(DT.J,22,9)                      
       TEXT.J  = SUBSTR(DT.J,1,80)                          
       TX.J  = SUBSTR(DT.J,34,2)                          
       IF PTL.J = "PTL A" & TX.J > 10 THEN        
       DO                                                  
       QUEUE TEXT.J                                        
       END                                                  
  END                                                      
  QUEUE ""                                                  
"EXECIO * DISKW OUT (FINIS"                                
  EXIT;                                                    
 


the output dataset which is empty have a ? in %Used column.

Re: writing in a output dataset

PostPosted: Fri Jun 05, 2020 4:30 pm
by enrico-sorichetti
it works for me ...

****** ***************************** Top of Data ******************************
 000001 //ENRICO1  JOB (ESYZ),'REXX',NOTIFY=ENRICO,                            
 000002 //             CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)                        
 000003 //* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 000004 //*                                                                    
 000005 //IEB     EXEC PGM=IEBGENER                                            
 000006 //SYSPRINT  DD SYSOUT=*                                                
 000007 //SYSIN     DD DUMMY                                                    
 000008 //SYSUT1    DD DATA,DLM=@@                                              
 000009 /* Rexx  */                                                            
 000010 Trace "O"                                                              
 000011 data.0 = 0                                                              
 000012 Address TSO "EXECIO  *       DISKR IN ( FINIS STEM data. "              
 000013 Address TSO "EXECIO" data.0 "DISKW OU ( FINIS STEM data. "              
 000014 exit                                                                    
 000015 @@                                                                      
 000016 //SYSUT2    DD DSN=&&GOSET(GO),DISP=(,PASS),                            
 000017 //             DCB=(RECFM=FB,LRECL=80),                                
 000018 //             UNIT=SYSDA,SPACE=(CYL,(1,1,1))                          
 000019 //*                                                                    
 000020 //IKJ     EXEC PGM=IKJEFT01,DYNAMNBR=30,REGION=0M,                      
 000021 //             PARM=GO                                                  
 000022 //SYSEXEC   DD DISP=(OLD,PASS),DSN=&&GOSET                              
 000023 //SYSTSPRT  DD SYSOUT=*                                                
 000024 //SYSPRINT  DD SYSOUT=*                                                
 000025 //SYSTSIN   DD DUMMY                                                    
 000026 //IN        DD DISP=SHR,DSN=ENRICO.ZMF.TGDG(0)                          
 000027 //OU        DD DSN=ENRICO.ZMF.TGDG(+1),                                
 000028 //             DISP=(NEW,CATLG),                                        
 000029 //             UNIT=SYSDA,SPACE=(CYL,1),                                          
 000030 //             RECFM=FB,LRECL=80                                        
 ****** **************************** Bottom of Data ****************************
 

are You sure that the condition

     IF PTL.J = "PTL A" & TX.J > 10 THEN        
       DO                                                  
       QUEUE TEXT.J                                        
       END        


is ever satisfied

Re: writing in a output dataset

PostPosted: Fri Jun 05, 2020 5:55 pm
by enrico-sorichetti
Follow on ...

unfortunately the script wastes storage for no reason ...

no reason two have three stems PTL. TEXT. TX.

the PTL anr TX comparisons can be done without using a intermediate variable

rexx will duplicate in the queue the content of the TEXT stem

use a plain simple variable

Re: writing in a output dataset

PostPosted: Fri Jun 05, 2020 6:16 pm
by samb01
here is a sample of trace i :


3 *-* "EXECIO * DISKR IN (FINIS STEM DT."                      
  >L>   "EXECIO * DISKR IN (FINIS STEM DT."                    
4 *-* DO J = 1 TO DT.0                                        
  >L>   "1"                                                    
  >V>   "9"                                                    
5 *-*  PLATEAU.J  = SUBSTR(DT.J,22,9)                          
  >C>    "DT.1"                                                
  >V>    "07:00:00;BABA;INFO VTS           2948 SCRATCH DU JOUR
            "
                                                 
  >L>    "22"                                                  
  >L>    "9"                                                  
  >F>    "VTS      "                                          
  >C>    "PLATEAU.1"                                          
6 *-*  TEXT.J  = SUBSTR(DT.J,1,80)                            
  >C>    "DT.1"                                                
  >V>    "07:00:00;BABA;INFO VTS           2948 SCRATCH DU JOUR
            "
                                                 
  >L>    "1"                                                  
  >L>    "80"                                                  
  >F>    "07:00:00;BABA;INFO VTS           2948 SCRATCH DU JOUR
  >C>    "
TEXT.1"                                              
7 *-*  TAUX.J  = SUBSTR(DT.J,34,2)                            
  >C>    "
DT.1"                                                
  >V>    "
07:00:00;BABA;INFO VTS           2948 SCRATCH DU JOUR
            "                                                  
  >L>    "
34"                                                  
  >L>    "
2"                                                  
  >F>    "
29"                                                  
  >C>    "
TAUX.1"                                              
8 *-*  IF PLATEAU.J = "
PLATEAU A" & TAUX.J > 85                
  >C>    "
PLATEAU.1"                                          
  >V>    "
VTS      "                                          
  >L>    "
PLATEAU A"                                          
  >O>    "
0"                                                  
  >C>    "
TAUX.1"                                              
  >V>    "
29"                                                  
   >L>    "
85"                                                  
   >O>    "
0"                                                  
   >O>    "
0"                                                  
12 *-* END                                                      
 4 *-* DO J = 1 TO DT.0                                        
 5 *-*  PLATEAU.J  = SUBSTR(DT.J,22,9)                          
   >C>    "
DT.2"                                                
   >V>    "
07:00:00;BABA;INFO VTS           5870 K7 CREEES HIER
             "                                                  
   >L>    "
22"                                                  
   >L>    "
9"                                                  
   >F>    "
VTS      "                                          
   >C>    "
PLATEAU.2"                                          
 6 *-*  TEXT.J  = SUBSTR(DT.J,1,80)                            
   >C>    "
DT.2"                                                
   >V>    "
07:00:00;BABA;INFO VTS           5870 K7 CREEES HIER
             "                                                  
   >L>    "
1"                                                  
   >L>    "
80"                                                  
   >F>    "
07:00:00;BABA;INFO VTS           5870 K7 CREEES HIER
   >C>    "TEXT.2"                                              
7 *-*  TAUX.J  = SUBSTR(DT.J,34,2)                            
  >C>    "DT.2"                                                
  >V>    "07:00:00;BABA;INFO VTS           5870 K7 CREEES HIER
            "
                                                 
  >L>    "34"                                                  
  >L>    "2"                                                  
  >F>    "58"                                                  
  >C>    "TAUX.2"                                              
8 *-*  IF PLATEAU.J = "PLATEAU A" & TAUX.J > 85                
  >C>    "PLATEAU.2"                                          
  >V>    "VTS      "                                          
  >L>    "PLATEAU A"                                          
  >O>    "0"                                                  
  >C>    "TAUX.2"                                              
  >V>    "58"                                                  
  >L>    "85"                                                  
  >O>    "0"                                                  
  >O>    "0"                                                  
2 *-* END                                                      
4 *-* DO J = 1 TO DT.0                                        
5 *-*  PLATEAU.J  = SUBSTR(DT.J,22,9)                          
....

12 *-* END                                                        
 4 *-* DO J = 1 TO DT.0                                            
 5 *-*  PLATEAU.J  = SUBSTR(DT.J,22,9)                            
   >C>    "DT.9"                                                  
   >V>    "07:00:00;BABA;INFO COLLEGIEN     62 PRIVATE STACKED VOLU
             "
                                                   
   >L>    "22"                                                    
   >L>    "9"                                                      
   >F>    "COLLEGIEN"                                              
   >C>    "PLATEAU.9"                                              
 6 *-*  TEXT.J  = SUBSTR(DT.J,1,80)                                
   >C>    "DT.9"                                                  
   >V>    "07:00:00;BABA;INFO COLLEGIEN     62 PRIVATE STACKED VOLU
             "
                                                   
   >L>    "1"                                                      
   >L>    "80"                                                    
   >F>    "07:00:00;BABA;INFO COLLEGIEN     62 PRIVATE STACKED VOLU
   >C>    "
TEXT.9"                                                
 7 *-*  TAUX.J  = SUBSTR(DT.J,34,2)                                
   >C>    "
DT.9"                                                  
   >V>    "
07:00:00;BABA;INFO COLLEGIEN     62 PRIVATE STACKED VOLU
             "                                                    
   >L>    "
34"                                                    
   >L>    "
2"                                                      
   >F>    "
62"                                                    
   >C>    "
TAUX.9"                                                
 8 *-*  IF PLATEAU.J = "
PLATEAU A" & TAUX.J > 85                  
   >C>    "
PLATEAU.9"                                              
   >V>    "
COLLEGIEN"                                              
   >L>    "
PLATEAU A"                                              
   >O>    "
0"                                                      
   >C>    "
TAUX.9"                                                
   >V>    "
62"                                                    
   >L>    "
85"                                                    
   >O>    "
0"                                                      
   >O>    "
0"                                                      
12 *-* END                                                        
 4 *-* DO J = 1 TO DT.0                                            
13 *-* QUEUE "
"                                                    
   >L>   "
"                                                        
14 *-* "
EXECIO * DISKW OUT (FINIS"                                
        >L>   "EXECIO * DISKW OUT (FINIS"                  
1    15 *-* EXIT                                          
 READY                                                    
 END                                                      
 


it is the same rexx between the JCL1 and the JCL 2

the only thing that change is the disp paameters...

Re: writing in a output dataset

PostPosted: Fri Jun 05, 2020 6:20 pm
by samb01
you're right.
It dosesn't work with a cataloged dataset with DISP=SHR...
So i can't anderstand wht's happening..

Re: writing in a output dataset

PostPosted: Fri Jun 05, 2020 6:44 pm
by samb01
ok, the two jcl work.
The condition is not satsified .
So i am sorry for the disturb :oops: