writing in a output dataset



IBM's Command List programming language & Restructured Extended Executor

writing in a output dataset

Postby samb01 » Fri Jun 05, 2020 3:07 pm

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.
samb01
 
Posts: 431
Joined: Mon Nov 16, 2009 7:24 pm
Has thanked: 1 time
Been thanked: 0 time

Re: writing in a output dataset

Postby enrico-sorichetti » Fri Jun 05, 2020 4:30 pm

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
cheers
enrico
When I tell somebody to RTFM or STFW I usually have the page open in another tab/window of my browser,
so that I am sure that the information requested can be reached with a very small effort
enrico-sorichetti
Global moderator
 
Posts: 3006
Joined: Fri Apr 18, 2008 11:25 pm
Has thanked: 0 time
Been thanked: 165 times

Re: writing in a output dataset

Postby enrico-sorichetti » Fri Jun 05, 2020 5:55 pm

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
cheers
enrico
When I tell somebody to RTFM or STFW I usually have the page open in another tab/window of my browser,
so that I am sure that the information requested can be reached with a very small effort
enrico-sorichetti
Global moderator
 
Posts: 3006
Joined: Fri Apr 18, 2008 11:25 pm
Has thanked: 0 time
Been thanked: 165 times

Re: writing in a output dataset

Postby samb01 » Fri Jun 05, 2020 6:16 pm

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...
samb01
 
Posts: 431
Joined: Mon Nov 16, 2009 7:24 pm
Has thanked: 1 time
Been thanked: 0 time

Re: writing in a output dataset

Postby samb01 » Fri Jun 05, 2020 6:20 pm

you're right.
It dosesn't work with a cataloged dataset with DISP=SHR...
So i can't anderstand wht's happening..
samb01
 
Posts: 431
Joined: Mon Nov 16, 2009 7:24 pm
Has thanked: 1 time
Been thanked: 0 time

Re: writing in a output dataset

Postby samb01 » Fri Jun 05, 2020 6:44 pm

ok, the two jcl work.
The condition is not satsified .
So i am sorry for the disturb :oops:
samb01
 
Posts: 431
Joined: Mon Nov 16, 2009 7:24 pm
Has thanked: 1 time
Been thanked: 0 time


Return to CLIST & REXX

 


  • Related topics
    Replies
    Views
    Last post