Answer question3 --> It must not be possible but in any case I think that is an incongruence and must be verified more quickly. If you can write all records (that this question3) at OUT3 with message ERROR DUPLICATE (for example) is the best solution for me. (If it's not possible I write only the first case at OUT1)
I chose to write only the first case in OUT1. Here's the DFSORT/ICETOOL job:
//S2 EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//IN1 DD DSN=... input file1 (FB/130)
//IN2 DD DSN=... input file2 (FB/332)
//T1 DD DSN=&&T1,UNIT=SYSDA,SPACE=(CYL,(5,5)),DISP=(,PASS)
//OUT1 DD DSN=... output file1 (FB/136)
//OUT2 DD DSN=... output file2 (FB/139)
//OUT3 DD DSN=... output file3 (FB/144)
//TOOLIN DD *
SORT FROM(IN2) TO(T1) USING(CTL1)
COPY JKFROM USING(CTL2)
/*
//CTL1CNTL DD *
INREC IFTHEN=(WHEN=(327,4,CH,EQ,C'0049'),OVERLAY=(333:C'0')),
IFTHEN=(WHEN=NONE,OVERLAY=(333:C'1'))
OPTION EQUALS
SORT FIELDS=(8,9,CH,A,333,1,CH,A)
OUTREC IFTHEN=(WHEN=GROUP,KEYBEGIN=(8,9),PUSH=(333:327,4,337:SEQ=8))
OUTFIL OMIT=(333,4,CH,EQ,C'0049',AND,337,8,ZD,GT,1),
BUILD=(1,332)
/*
//CTL2CNTL DD *
JOINKEYS F1=IN1,FIELDS=(1,9,A),SORTED
JOINKEYS F2=T1,FIELDS=(8,9,A),SORTED
JOIN UNPAIRED,F1
REFORMAT FIELDS=(F1:1,130,?,F2:1,6,327,4)
OPTION COPY
OUTFIL FNAMES=OUT1,
INCLUDE=(131,1,CH,EQ,C'B',AND,138,4,CH,EQ,C'0049'),
BUILD=(1,130,132,6)
OUTFIL FNAMES=OUT2,
INCLUDE=(131,1,CH,EQ,C'B',AND,138,4,CH,NE,C'0049'),
BUILD=(1,130,C'ERROR',138,4)
OUTFIL FNAMES=OUT3,
INCLUDE=(131,1,CH,EQ,C'1'),
BUILD=(1,130,C'ERROR',C'NOT FOUND')
/*
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//IN1 DD DSN=... input file1 (FB/130)
//IN2 DD DSN=... input file2 (FB/332)
//T1 DD DSN=&&T1,UNIT=SYSDA,SPACE=(CYL,(5,5)),DISP=(,PASS)
//OUT1 DD DSN=... output file1 (FB/136)
//OUT2 DD DSN=... output file2 (FB/139)
//OUT3 DD DSN=... output file3 (FB/144)
//TOOLIN DD *
SORT FROM(IN2) TO(T1) USING(CTL1)
COPY JKFROM USING(CTL2)
/*
//CTL1CNTL DD *
INREC IFTHEN=(WHEN=(327,4,CH,EQ,C'0049'),OVERLAY=(333:C'0')),
IFTHEN=(WHEN=NONE,OVERLAY=(333:C'1'))
OPTION EQUALS
SORT FIELDS=(8,9,CH,A,333,1,CH,A)
OUTREC IFTHEN=(WHEN=GROUP,KEYBEGIN=(8,9),PUSH=(333:327,4,337:SEQ=8))
OUTFIL OMIT=(333,4,CH,EQ,C'0049',AND,337,8,ZD,GT,1),
BUILD=(1,332)
/*
//CTL2CNTL DD *
JOINKEYS F1=IN1,FIELDS=(1,9,A),SORTED
JOINKEYS F2=T1,FIELDS=(8,9,A),SORTED
JOIN UNPAIRED,F1
REFORMAT FIELDS=(F1:1,130,?,F2:1,6,327,4)
OPTION COPY
OUTFIL FNAMES=OUT1,
INCLUDE=(131,1,CH,EQ,C'B',AND,138,4,CH,EQ,C'0049'),
BUILD=(1,130,132,6)
OUTFIL FNAMES=OUT2,
INCLUDE=(131,1,CH,EQ,C'B',AND,138,4,CH,NE,C'0049'),
BUILD=(1,130,C'ERROR',138,4)
OUTFIL FNAMES=OUT3,
INCLUDE=(131,1,CH,EQ,C'1'),
BUILD=(1,130,C'ERROR',C'NOT FOUND')
/*