Write a JCL by using the below requirement:
File1 =1, File2 =11 and output needs to come as File3 =111?
Answers were Sorted based on User's Feedback
Answer / mdv
Step 1.
Add SEQNUM for both the files @ positions 3 to 8 and 2 to 7
respectively.
Step 2.
Join based on key and reformat as needed.
// SYSIN DD *
JOINKEYS FILE=F1,FIELDS=(3,6,A)
JOINKEYS FILE=F2,FIELDS=(2,6,A)
REFORMAT FIELDS=(F1:1,2,F2:1,1)
SORT FIELDS=COPY
/*
Note: Not tested.
| Is This Answer Correct ? | 2 Yes | 0 No |
Answer / sathish kumar chandra sekaran
//D362967J JOB (UBS-UBS-D362967-XXX-999),CLASS=C,
// MSGCLASS=X,MSGLEVEL=(1,1),NOTIFY=D362967
//STEP1 EXEC PGM=SORT
//SORTIN DD *
1
/*
//SORTOUT DD DSN=D362967.TEST.PS3,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSDUMP DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=COPY
OUTREC FIELDS=(1:1,8,60:SEQNUM,3,ZD,START=1,INCR=2)
/*
//STEP2 EXEC PGM=SORT
//SORTIN DD *
11
/*
//SORTOUT DD DSN=D362967.TEST.PS4,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSDUMP DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=COPY
OUTREC FIELDS=(1:C'1',2:1,8,60:SEQNUM,3,ZD,START=2,INCR=2)
/*
//STEP3 EXEC PGM=SORT
//SORTIN DD DSN=D362967.TEST.PS3,DISP=SHR
// DD DSN=D362967.TEST.PS4,DISP=SHR
//SORTOUT DD DSN=D362967.TEST.PS5,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSDUMP DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=(60,3,CH,A)
/*
//STEP4 EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN1 DD DSN=D362967.TEST.PS5,DISP=SHR
//OUT1 DD SYSOUT=*
//TOOLIN DD *
SPLICE FROM(IN1) TO(OUT1)-
ON(1,1,CH) KEEPNODUPS WITH(2,2)
/*
This will meet your requirement.
| Is This Answer Correct ? | 3 Yes | 2 No |
Answer / nishant singhal
we can do it by cobol pgm also.
File1=1,file2=11 and
fd file3
01 file3-rec
05 ws1 pic 9(1) value zero.
05 ws2 pic 9(2) value zero.
open file1 in inpute mode and write the record in file3
which is opened in output mode. Now open file2 in input and
file3 in IO mode and update the record.
I think it should work.
Muttiah, would you suggest any better approach by using JCL
thn please share with us. Thanks
| Is This Answer Correct ? | 1 Yes | 0 No |
Answer / muttiah
Nishant,
Thanks for your answer. It's a correct approach to achieve
the result as '111' in file 3..
I'm not sure how this can be done in JCL.
Can someone suggest how this can be achieved.
| Is This Answer Correct ? | 0 Yes | 0 No |
Answer / ram mohan
@MDV:
I have tested the code. but it's giving Maxcc - 16. Can you
please give us the exact JCL. I feel Joinkeys are not
supporting in the sort which we are using.
thanks in advance.
| Is This Answer Correct ? | 0 Yes | 0 No |
Answer / msharib
One can try this
//STEP2 EXEC PGM=SORT
//IN1 DD *
1
/*
//IN2 DD *
111
/*
//SORTOUT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
JOINKEYS F1=IN1,FIELDS=(1,1,A)
JOINKEYS F2=IN2,FIELDS=(1,1,A)
REFORMAT FIELDS=(F1:1,1,F2:1,3)
OPTION COPY
/*
| Is This Answer Correct ? | 0 Yes | 0 No |
Answer / muttiah
@satish:
I'm not sure on what basis you have created this jcl. But
if i'm your interviewer i would have blasted you like
anything.
Findings:
1. step1 output will be 1 in postion 1 followed by 001 in
pos 60 - 62.
2. step2 output will be 111 in position 1-3 followed by 002
in pos 60-63. why the hell are you hardcoding sortin in
both the steps and sortout of step2 you are force fully
making it come as '111' because of this
OUTREC FIELDS=1:C'1',2:1
Then what is the case of having step1 if you force fully
making it as '111'..
Coming to step4: i'm not sure what does it mean but i
executed and saw like the output is in this format.
111 in pos 1-3 and 001 in pos 60-62.
Then where are you eliminating 001 in cols 60.
If you are not sure of the answer don't post anything. But
never divert people with your answers. People who are new
to mainframe can feel your answer is correct.
| Is This Answer Correct ? | 0 Yes | 3 No |
i am trying to copy a PS file into VSAM file in step2 by using PGM=IDCAMS,COND=(0,LT) and the pS file is getting sorted in the step1. I got the return code 00 for step1 but step2 got flushed. can u please help on this. Below is My JCL. SEPP050 EXEC PGM=SORT,REGION=6144K SYSIN DD DSN=SYSCMN.PROD.CCLIB (F5910BNN), DISP=SHR SYSOUT DD SYSOUT=* SYSUDUMP DD SYSOUT=A SORTIN DD DSN=Z1225BT.F5910EPP.HISOUT, DISP=SHR SORTOUT DD DSN=Z1225BT.F5910EPP.HISOUT.SORTOUT5, DISP= (NEW,CATLG,DELETE),UNIT=DELQ, SPACE=(CYL, (500,500),RLSE), DCB= (RECFM=FB,LRECL=1606,BLKSIZE=16060,BUFNO=15) SORTWK01 DD UNIT=SYSDA,SPACE=(CYL, (1)) SORTWK02 DD UNIT=SYSDA,SPACE=(CYL, (1)) SORTWK03 DD UNIT=SYSDA,SPACE=(CYL, (1)) SORTWK04 DD UNIT=SYSDA,SPACE=(CYL, (1)) SYSIN1 DD UNIT=VIO,SPACE= (80,1) * SEPP060 EXEC PGM=IDCAMS,COND= (0,LT) SYSPRINT DD SYSOUT=* SYSOUT DD SYSOUT=* SYSLIST DD SYSOUT=* *** DD01 DD DSN=Z1225BT.F5910EPP.HISOUT.SORTOUT, // DISP=SHR //*** //DD01O DD DSN=Z1225BT.F5910PHS, // DISP=SHR, // AMP=(AMORG,'BUFND=12,BUFNI=5') //SYSIN DD DSN=SYSCMN.PROD.CCLIB(F5910BBB), // DISP=SHR Output RC for the two steps: SDCBPJ05 SEPP050 00 236 .00 .00 .0 SDCBPJ05 SEPP060 FLUSH 0 .00 .00 .0
How to Enter The Spool Area In Real Time?
once we submitted the job to the operating system, how can we cancel the job before execution?
what is force complete
My requirement is : How to populate a empty PS/flat file with ONLY spaces in the first line. You should not use any input dataset to do this. I'm not sure whether you may use any utility for this purpose?
How do You skip a Step In JCL?
What does S0C4 error mean?
What does the statements: typrun=scan and typrun=hold do in a JCL statement
Can you code instream data in a PROC ?
What does the keyword DCB mean and what are some of the keywords associated with it?
whats SOC7?
How many extents are possible for a sequential file ? For a VSAM file ?