Page 1 of 1

Mainframe - Dynamic sort card building with trailer record

PostPosted: Mon Apr 20, 2020 6:50 pm
by Dambaattam
Team,
I am trying to add the trailer record to build TRL and date and time in the output DYNAMIC sort card but getting lot of errors. could anyone please help on this

I have the input file as like below

xxxxxxxx 20200412101223
yyyyyyyy 20200312101128

Sort card to prepare a dynamic Sort card
SYSIN DD *
OPTION COPY
INCLUDE COND=(1,8,CH,EQ,C'XXXXXXXX')
OUTFIL REMOVECC,
HEADER1=('SORT FIELDS=(57,8,ZD,D)'),
BUILD=(C' INCLUDE COND=((57,8,ZD,GT,',9,8,C'),OR,',40X,/,
C' (57,8,ZD,EQ,',9,8,C',AND,65,6,ZD,GT,',17,6,C')),
C('TRAILER1=('TRL',DATE=(4MD/),TIME=(24)))')


output what i expect

SORT FIELDS(57,8,ZD,D)
INCLUDE COND=((57,8,ZD,GT,20200421), OR,
(57,8,ZD,EQ,20200421,AND,65,6,ZD,GT,101223))
TRAILER1=('TRL',DATE=(4MD/),TIME=(24))


EXCEPT THE TRAILER, ITS WORKING FINE. TRAILER IS GIVING LOT OF SYNTAX ERRORS IN THE TRAILER LINE RC 0008

Thanks in Advance

Re: Mainframe - Dynamic sort card building with trailer reco

PostPosted: Mon Apr 20, 2020 8:08 pm
by sergeyken
RTFM:
TRAILERx=(field1,field2,...,fieldn)

&DATE[±nnnn]
&DATE=(m1m2m3m4)[±nnnn]
&DATENS=(xyz)[±nnnn]
&YDDD=(m1m2m3)[±nnnn]
&YDDDNS=(m1m2)[±nnnn]

Re: Mainframe - Dynamic sort card building with trailer reco

PostPosted: Mon Apr 20, 2020 8:25 pm
by sergeyken
Dambaattam wrote:TRAILER IS GIVING LOT OF SYNTAX ERRORS IN THE TRAILER LINE RC 0008

WTF???

Re: Mainframe - Dynamic sort card building with trailer reco

PostPosted: Mon Apr 20, 2020 9:58 pm
by NicC
1 - use the code tags to present your code. As it is posted your control statements start in cc1 which is reserved for labels and your data has spaces but have those spaces been truncated by HTML?
2 - Show your sort messages
3 - get rid of those capitals.
4 - SYSIN DD * is a JCL statement not a sort control statement and as such should begin //

Re: Mainframe - Dynamic sort card building with trailer reco

PostPosted: Thu Apr 23, 2020 12:59 pm
by Dambaattam
It worked with sort card shown below

OPTION COPY
INCLUDE COND=(1,8,CH,EQ,C'XXXXXXXX')
OUTFIL REMOVECC,
HEADER1=('SORT FIELDS=(57,8,ZD,D)',/,
'   INCLUDE COND=((57,8,ZD,GT,',9,8,C'),OR,'),
Build=(C'       (57,8,ZD,EQ,',9,8,C',AND,65,6,ZD,GT,',17,6,C'))',80:x),
TRAILER1=(C' OUTFIL,REMOVECC,',/,
''TRAILER1=(C''TRL'',DATE=(4MD/),TIME)',80:X))



Output obtained

SORT FIELDS(57,8,ZD,D)
INCLUDE COND=((57,8,ZD,GT,20200421), OR,
(57,8,ZD,EQ,20200421,AND,65,6,ZD,GT,101223))
OUTFIL REMOVECC,
TRAILER1=('TRL',DATE=(4MD/),TIME)

Coded for you DO IT YOURSELF IN FUTURE

Re: Mainframe - Dynamic sort card building with trailer reco

PostPosted: Thu Apr 23, 2020 2:08 pm
by NicC
That will not work - your control statements must start in column 2, or later. As you can see from the coded statements you have them starting in column 1.

Re: Mainframe - Dynamic sort card building with trailer reco

PostPosted: Thu Apr 23, 2020 6:53 pm
by sergeyken
Discussions with newcomers at this forum do more and more resemble a conversation between a blind person, and a deaf one... :evil:

It's getting much easier just to give a ready solution rather than trying for weeks, and for months, to give lessons for those who has no intention to learn it or to try it, at all.

//*=====================================================================
//* PROCESS DYNAMIC DATES                                              
//*=====================================================================
//SYMDATES EXEC PGM=SYNCSORT                                            
//*                                                                    
//SYSOUT   DD  SYSOUT=*                                                
//*                                                                    
//SORTIN   DD  *                                                        
XXXXXXXX 20200412101223                                                
YYYYYYYY 20200312101128                                                
ZZZZZZZZ 20200212101128                                                
//*                                                                    
//SYMBOLS@ DD  SYSOUT=*                                                
//SYMBOLS  DD  DISP=(NEW,PASS),                                        
//             DCB=(RECFM=FB,LRECL=80),                                
//             UNIT=SYSDA,SPACE=(TRK,(5,5),RLSE),                      
//             DSN=&&SYMNAMES                                          
//*                                                                    
//SYSIN    DD  *                                                        
 INCLUDE COND=(1,8,CH,EQ,C'XXXXXXXX')                                  
 SORT FIELDS=COPY,STOPAFT=1                                            
 OUTFIL FNAMES=(SYMBOLS,SYMBOLS@),NULLOFL=RC4,                          
        BUILD=(C'VALID_DATE1,C''',10,8,C'''',80:X,                      
             /,C'VALID_DATE2,C''',18,6,C'''',80:X)                      
 END                                                                    
//*                                                                    
//*                                                                    
//*=====================================================================
//SELECT   EXEC PGM=SYNCSORT,COND=(0,NE,SYMDATES)                      
//*                                                                    
//SYMNAMES DD  DISP=(OLD,DELETE),DSN=&&SYMNAMES                        
//SYSOUT   DD  SYSOUT=*                                                
//*                                                                    
//SORTIN   DD  *                                                        
AAAAAAAA                                                20200412101223  
BBBBBBBB                                                20200412101228  
CCCCCCCC                                                20200512101123  
DDDDDDDD                                                20200612101122  
TTTTTTTT                                                20200412101223  
UUUUUUUU                                                20200412101220  
VVVVVVVV                                                20200512101120  
WWWWWWWW                                                20200612101120  
//*                                                                    
//SORTOUT  DD  SYSOUT=*                                                
//*                                                                    
//SYSIN    DD  *                                                        
 INCLUDE COND=((57,8,CH,GT,VALID_DATE1),                                
            OR,(57,8,CH,EQ,VALID_DATE1,                                
            AND,65,6,CH,GT,VALID_DATE2))                                
 SORT FIELDS(57,8,CH,D)                                                
 OUTFIL REMOVECC,                                                      
        TRAILER1=('TRL ',&DATE(4MD/),X,&TIME)                          
 END                                                                    
//*                                                                    
//*                                                                    
//*=====================================================================
 

********************************* TOP OF DATA *****************************
DDDDDDDD                                                20200612101122    
WWWWWWWW                                                20200612101120    
CCCCCCCC                                                20200512101123    
VVVVVVVV                                                20200512101120    
BBBBBBBB                                                20200412101228    
TRL 2020/04/23 09:14:39                                                    
******************************** BOTTOM OF DATA ***************************