# regression tests for the sortsync sort discipline library TITLE + sync unset SORTIN SORTOUT SORTOF01 SORTOF02 SORTOF03 export LC_ALL=C VIEW data TEST 01 'basics' EXEC -lsync,control=$data/s.ss,list OUTPUT - $'FILE COPY out KEY -k.1.3 -k.5.1r SORT 0 3 a 0 4 1 a 1 SUM 4 3 D 0 FILE size=4 01 OUT 0 3 v 0 3 1 v 0 0a FILE size=4 02 INCLUDE=([6,1,a]!=\'31\'&&[1,2,b]!=\'bead\') OUT 4 3 v 0 3 1 v 0 0a FILE size=15 03 OUT 0 3 v 0 3 2 v 0 0000 0 3 v 0 202020 0 1 v 0 00 0 1 v 0 20 0 4 v 0 ffffffff 0 1 v 0 0a' EXEC -lsync,control=$data/t.ss,list OUTPUT - $'FILE COPY out KEY -k.1.3 SORT 0 3 a 0 SUM 4 3 D 0 FILE size=4 01 OUT 0 3 v 0 3 1 v 0 0a FILE size=4 02 INCLUDE=([6,1,a]!=\'31\'&&[1,2,b]!=\'bead\') OUT 4 3 v 0 3 1 v 0 0a' EXEC -lsync,control=$data/t.ss,out01=1.dat,out02=2.dat $data/t.dat OUTPUT - $'aaa 111 001 bbb 333 002 ccc 555 003' OUTPUT 1.dat $'aaa bbb ccc' OUTPUT 2.dat $'333 555' EXPORT SORTOF01=1.bad SORTOF02=2.bad EXEC -lsync,control=$data/t.ss,out01=1.1.dat,out02=1.2.dat $data/t.dat SAME 1.1.dat 1.dat SAME 1.2.dat 2.dat EXPORT SORTOF01=2.1.dat SORTOF02=2.2.dat EXEC -lsync,control=$data/t.ss $data/t.dat SAME 2.1.dat 1.dat SAME 2.2.dat 2.dat EXPORT SORTOF01=3.1.dat SORTOF02=3.2.dat EXEC -lsync $data/t.dat SAME INPUT $data/t.ss SAME 3.1.dat 1.dat SAME 3.2.dat 2.dat EXEC -lsync,out01=01.dat $data/t.dat INPUT - $'SORT FIELDS=COPY OUTFIL FILES=01, OUTREC=(1,3,4,A\'\\n\')' OUTPUT - $'aaa 001 001 bbb 003 002 ccc 005 003 aaa 010 004 bbb 030 005 ccc 050 006 aaa 100 007 bbb 300 008 ccc 500 009' OUTPUT 01.dat $'aaa bbb ccc aaa bbb ccc aaa bbb ccc' EXEC -lsync,out01=4.1.dat,out02=4.2.dat $data/t.dat INPUT - $'SORT FIELDS=COPY OUTFIL FILES=01, OUTREC=(1,3,4,A\'\\n\') OUTFIL FILES=02, INCLUDE=(7,1,AC,NE,A\'1\',AND,2,2,NE,B\'1011111010101101\'), OUTREC=(5,3,4,A\'\\n\')' OUTPUT - $'aaa 001 001 bbb 003 002 ccc 005 003 aaa 010 004 bbb 030 005 ccc 050 006 aaa 100 007 bbb 300 008 ccc 500 009' OUTPUT 4.1.dat $'aaa bbb ccc aaa bbb ccc aaa bbb ccc' OUTPUT 4.2.dat $'003 005 010 030 050 100 300 500' EXEC -lsync,out01=5.1.dat,out02=5.2.dat $data/t.dat INPUT - $'SORT OUTFIL FILES=01, OUTREC=(1,3,4,A\'\\n\') OUTFIL FILES=02, INCLUDE=(7,1,AC,NE,A\'1\',AND,2,2,NE,B\'1011111010101101\'), OUTREC=(5,3,4,A\'\\n\')' OUTPUT - $'aaa 001 001 aaa 010 004 aaa 100 007 bbb 003 002 bbb 030 005 bbb 300 008 ccc 005 003 ccc 050 006 ccc 500 009' OUTPUT 5.1.dat $'aaa aaa aaa bbb bbb bbb ccc ccc ccc' OUTPUT 5.2.dat $'010 100 003 030 300 005 050 500' TEST 02 'sum' EXEC -lsync,control=$data/u.ss $data/t.dat OUTPUT - $'999' EXEC -lsync,control=$data/u.ss $data/t.dat -o u.out OUTPUT - OUTPUT u.out $'999' EXPORT SORTXSUM=xsum.out EXEC -lsync,control=$data/v.ss $data/t.dat -o v.out OUTPUT - OUTPUT v.out $'999' OUTPUT xsum.out $'bbb 003 002 ccc 005 003 aaa 010 004 bbb 030 005 ccc 050 006 aaa 100 007 bbb 300 008 ccc 500 009' TEST 03 'ebcdic' EXEC -R12 -lsync,control=$data/e.ss,out1=e.out,out2=s.out $data/e.dat OUTPUT -n - $'\x81\x81\x81\x40\xf0\xf0\xf1\x40\xa7\xa7\xa7\x15\x82\x82\x82\x40\xf0\xf0\xf3\x40\xa7\xa7\xa7\x15\x83\x83\x83\x40\xf0\xf0\xf5\x40\xa7\xa7\xa7\x15' OUTPUT e%4.out OUTPUT -n s%4.out $'\xf0\xf0\xf1\x15\xf0\xf0\xf3\x15\xf0\xf0\xf5\x15' EXEC -lsync" lrecl=12 code=ebcdic-o control=$data/e.ss out1=e.1.out out2=s.1.out " $data/e.dat SAME e.1%4.out e%4.out SAME s.1%4.out s%4.out EXEC -lsync" control=$data/x.ss out1=e.2.out out2=s.2.out " $data/e.dat SAME e.2%4.out e%4.out SAME s.2%4.out s%4.out EXEC -lsync,control=$data/f.ss,out-int=e.3.out $data/e.dat SAME e.3%4.out e%4.out EXEC -R12 -lsync,control=$data/e.ss,out1=e.4.out,out2=s.4.out -o e1.out $data/e.dat OUTPUT - OUTPUT -n e1%12.out $'\x81\x81\x81\x40\xf0\xf0\xf1\x40\xa7\xa7\xa7\x15\x82\x82\x82\x40\xf0\xf0\xf3\x40\xa7\xa7\xa7\x15\x83\x83\x83\x40\xf0\xf0\xf5\x40\xa7\xa7\xa7\x15' OUTPUT e%4.out SAME e.4%4.out e%4.out SAME s.4%4.out s%4.out EXEC -R12 -lsync,control=$data/e.ss,out1=e.5.out,out2=s.5.out -o /dev/null $data/e.dat SAME e.5%4.out e%4.out SAME s.5%4.out s%4.out EXEC -lsync,control=$data/g.ss $data/e.dat EXEC -lsync,control=$data/h.ss $data/e.dat EXEC -lsync,control=$data/k.ss $data/e.dat TEST 04 'ebcdic with marked input' EXEC -R% -lsync,control=$data/e.ss,out1=e.out,out2=s.out $data/e%12.dat OUTPUT -n - $'\x81\x81\x81\x40\xf0\xf0\xf1\x40\xa7\xa7\xa7\x15\x82\x82\x82\x40\xf0\xf0\xf3\x40\xa7\xa7\xa7\x15\x83\x83\x83\x40\xf0\xf0\xf5\x40\xa7\xa7\xa7\x15' OUTPUT e%4.out OUTPUT -n s%4.out $'\xf0\xf0\xf1\x15\xf0\xf0\xf3\x15\xf0\xf0\xf5\x15' EXEC -R% -lsync" code=ebcdic-o control=$data/e.ss out1=e.1.out out2=s.1.out " $data/e%12.dat SAME e.1%4.out e%4.out SAME s.1%4.out s%4.out EXEC -R% -lsync" control=$data/x.ss out1=e.2%4.out out2=s.2%4.out " $data/e%12.dat SAME e.2%4.out e%4.out SAME s.2%4.out s%4.out EXEC -R% -lsync,control=$data/f.ss,out-int=e.3.out $data/e%12.dat SAME e.3%4.out e%4.out EXEC -R% -lsync,control=$data/f.ss,out-int=e.3.out $data/e.f.dat SAME e.3%4.out e%4.out EXEC -R% -lsync,control=$data/e.ss,out1=e.4%4.out,out2=s.4%4.out -o e1%12.out $data/e%12.dat OUTPUT - OUTPUT -n e1%12.out $'\x81\x81\x81\x40\xf0\xf0\xf1\x40\xa7\xa7\xa7\x15\x82\x82\x82\x40\xf0\xf0\xf3\x40\xa7\xa7\xa7\x15\x83\x83\x83\x40\xf0\xf0\xf5\x40\xa7\xa7\xa7\x15' OUTPUT e%4.out SAME e.4%4.out e%4.out SAME s.4%4.out s%4.out EXEC -R% -lsync,control=$data/e.ss,out1=e.5.out,out2=s.5.out -o /dev/null $data/e%12.dat SAME e.5%4.out e%4.out SAME s.5%4.out s%4.out EXEC -R% -lsync,control=$data/g.ss $data/e%12.dat EXEC -R% -lsync,control=$data/h.ss $data/e%12.dat EXEC -R% -lsync,control=$data/k.ss $data/e%12.dat TEST 05 'detailed selection' EXEC -lsync,control=$data/i.ss,out1=1,out2=2,out3=3,out4=4 -o 0 $data/i.dat OUTPUT - OUTPUT 0 $'aO0YX44\nbO0NX55\ncO0YX55\ndI1XY31\neI0XY31\nfOABN72\ngUABY72' OUTPUT 1 $'cO0\neI0\ngUA' OUTPUT 2 $'dI1\neI0' OUTPUT 3 $'aO0\nbO0\ncO0\nfOA' OUTPUT 4 $'gUA' TEST 06 'junk report' EXEC -lsync,control=$data/t.ss,junk=j.out $data/t.dat OUTPUT - $'aaa 111 001 bbb 333 002 ccc 555 003' OUTPUT j.out $' 11 6' TEST 07 'packed decimal' EXEC -lsync,control=$data/p.ss $data/p.dat OUTPUT -n - $'\x01\x17\x7c\x30\x31\x01\x17\x7d\x30\x32' TEST 08 'zoned decimal' EXEC -lsync,control=$data/z.ss $data/z.dat OUTPUT -n - $'\xf0\xf1\xf1\xf7\xc7\x30\x31\xf0\xf1\xf1\xf7\xd7\x30\x32' TEST 09 'selection expressions' EXEC -lsync,control=lt.ss INPUT - $'9\n8\n7\n6\n5\n4\n3\n2\n1\n0' INPUT lt.ss $'RECORD TYPE=F,LENGTH=2\nSORT FIELDS=(1,1,AC,A)\nINCLUDE=(1,1,AC,LT,A\'3\')' OUTPUT - $'0\n1\n2' EXEC -lsync,control=le.ss INPUT le.ss $'RECORD TYPE=F,LENGTH=2\nSORT FIELDS=(1,1,AC,A)\nINCLUDE=(1,1,AC,LE,A\'2\')' EXEC -lsync,control=gt.ss INPUT gt.ss $'RECORD TYPE=F,LENGTH=2\nSORT FIELDS=(1,1,AC,A)\nINCLUDE=(1,1,AC,GT,A\'6\')' OUTPUT - $'7\n8\n9' EXEC -lsync,control=ge.ss INPUT ge.ss $'RECORD TYPE=F,LENGTH=2\nSORT FIELDS=(1,1,AC,A)\nINCLUDE=(1,1,AC,GE,A\'7\')' EXEC -lsync,control=eq.ss INPUT eq.ss $'RECORD TYPE=F,LENGTH=2\nSORT FIELDS=(1,1,AC,A)\nINCLUDE=(1,1,AC,EQ,A\'5\')' OUTPUT - $'5' EXEC -lsync,control=ne.ss INPUT ne.ss $'RECORD TYPE=F,LENGTH=2\nSORT FIELDS=(1,1,AC,A)\nINCLUDE=(1,1,AC,NE,A\'5\')' OUTPUT - $'0\n1\n2\n3\n4\n6\n7\n8\n9' EXEC -lsync,control=and.ss INPUT and.ss $'RECORD TYPE=F,LENGTH=2\nSORT FIELDS=(1,1,AC,A)\nINCLUDE=(1,1,AC,NE,A\'0\',AND,1,1,AC,NE,A\'9\')' OUTPUT - $'1\n2\n3\n4\n5\n6\n7\n8' EXEC -lsync,control=nor.ss INPUT nor.ss $'RECORD TYPE=F,LENGTH=2\nSORT FIELDS=(1,1,AC,A)\nINCLUDE=(NOT,(1,1,AC,EQ,A\'0\',OR,1,1,AC,EQ,A\'9\'))' EXEC -lsync,control=andor.ss INPUT andor.ss $'RECORD TYPE=F,LENGTH=2\nSORT FIELDS=(1,1,AC,A)\nINCLUDE=(1,1,AC,GT,A\'0\',AND,1,1,AC,LT,A\'2\',OR,\n1,1,AC,GT,A\'7\',AND,1,1,AC,LT,A\'9\')' OUTPUT - $'1\n8' EXEC -lsync,control=andor1.ss INPUT andor1.ss $'RECORD TYPE=F,LENGTH=2\nSORT FIELDS=(1,1,AC,A)\nINCLUDE=(1,1,AC,GT,A\'0\',AND,1,1,AC,LT,A\'2\',\nOR,1,1,AC,GT,A\'7\',AND,1,1,AC,LT,A\'9\')' EXEC -lsync,control=andor2.ss INPUT andor2.ss $'RECORD TYPE=F,LENGTH=2\nSORT FIELDS=(1,1,AC,A)\nINCLUDE=(1,1,AC,GT,A\'0\',AND,1,1,AC,LT,A\'2\',\nOR,\n1,1,AC,GT,A\'7\',AND,1,1,AC,LT,A\'9\')' EXEC -lsync,control=andor3.ss INPUT andor3.ss $'RECORD TYPE=F,LENGTH=2\nSORT FIELDS=(1,1,AC,A)\nINCLUDE=(1,1,AC,GT,A\'0\',AND,1,1,AC,LT,A\'2\',OR,\n1,1,AC,GT,A\'7\',AND,1,1,AC,LT,A\'9\')' EXEC -lsync,control=pandora.ss INPUT pandora.ss $'RECORD TYPE=F,LENGTH=2\nSORT FIELDS=(1,1,AC,A)\nINCLUDE=((1,1,AC,GT,A\'0\',AND,1,1,AC,LT,A\'2\'),\nOR,\n(1,1,AC,GT,A\'7\',AND,1,1,AC,LT,A\'9\'))' EXEC -lsync,control=pandorb.ss INPUT pandorb.ss $'RECORD TYPE=F,LENGTH=2\nSORT FIELDS=(1,1,AC,A)\nINCLUDE=(1,1,AC,GT,A\'0\',AND,(1,1,AC,LT,A\'2\',\nOR,\n1,1,AC,GT,A\'7\'),AND,1,1,AC,LT,A\'9\')' TEST 10 '/dev/null => RS_IGNORE' EXEC -lsync,control=$data/c.ss -Xdump -za16ki -zi16ki -zm16 -zo16ki -o /dev/null /dev/null ERROR - $'main intermediates=16 state method=rasp insize=16384 outsize=16384 alignsize=8192 procsize=16384 recsize=0 merge=0 reverse=0 stable=1 uniq=0 ignore=1 verbose=0 tab=\' \' keys= maxfield=0 record format d data 0x0000000a key -1 field[0] begin field = 0 begin char = 0 end field = 2147483647 end char = 0 ccode = 0 coder = t keep = all trans = ident bflag = 0 eflag = 0 rflag = 0 style = obsolete' TEST 11 'catenation' EXEC -lsync c b a INPUT - $'SORT FIELDS=COPY' INPUT a $'aaa' INPUT b $'bbb' INPUT c $'ccc' OUTPUT - $'ccc\nbbb\naaa' TEST 12 'INREC reformat' EXEC -lsync,control=$data/r.ss,list OUTPUT - $'FILE size=8 in INREC 2 8 v 0 FILE COPY out COPY STOPAFT 5 INCLUDE=[0,1,c]==\'f1\'' EXEC -lsync $data/t.dat INPUT - $'MERGE FIELDS=COPY' SAME OUTPUT $data/t.dat EXEC -lsync $data/t.dat INPUT - $'SORT FIELDS=(1,3),SKIPREC=2,STOPAFT=4\nINREC FIELDS=(5,8)' OUTPUT - $'005 003 010 004 030 005 050 006' EXEC -lsync $data/s.dat INPUT - $'OPTION EQUALS\nSORT FIELDS=(1,3)\nINREC FIELDS=(1,4,9,4)' OUTPUT - $'aaa 001 aaa 004 aaa 007 bbb 002 bbb 005 bbb 008 ccc 003 ccc 006 ccc 009' EXEC -lsync $data/s.dat INPUT - $'SORT FIELDS=(1,3)\nINREC FIELDS=(1,4,9,4)' EXEC -lsync $data/c.dat INPUT - $' INCLUDE COND=(5,1,GE,A\'M\'),FORMAT=CH INREC FIELDS=(10,3,20,8,33,11,5,1,80,1) SORT FIELDS=(4,8,CH,A,1,3,FI,A) SUM FIELDS=(17,4,BI)' OUTPUT - $'M11M12mmmmmM13mmmmmmmmM M11M22mmmmmM23mmmmmmmmM N21N12nnnnnN13nnnnnnnnN N21N22nnnnnN23nnnnnnnnN Z11Z12zzzzzZ13zzzzzzzzZ Z21Z22zzzzzZ23zzzzzzzzZ' EXEC -lsync $data/c.dat INPUT - $' INCLUDE COND=(5,1,GE,A\'M\'),FORMAT=CH OUTREC FIELDS=(10,3,20,8,33,11,5,1,80,1) SORT FIELDS=(20,8,CH,A,10,3,FI,A) SUM FIELDS=(38,4,BI)' TEST 13 'merge with E35 exit' EXPORT SORT_E35_STATUS=AAAC EXEC -lsync,control=merge.ss c d b a INPUT merge.ss $'MERGE FIELDS=(1,2,CH,A)\nMODS E35=(E35,100,test)' INPUT a $'aa\nzz' INPUT b $'bb\nyy' INPUT c $'cc\nxx' INPUT d $'dd\nww' OUTPUT - $'aa\nbb\ncc\ndd\nww\nxx\nyy\nzz' ERROR - $'sort exit E35 1 A [3] "aa" sort exit E35 2 A [3] "bb" sort exit E35 3 A [3] "cc" sort exit E35 4 C [3] "dd" sort exit E35 5 C [3] "ww" sort exit E35 6 C [3] "xx" sort exit E35 7 C [3] "yy" sort exit E35 8 C [3] "zz"' EXPORT SORT_E35_STATUS=DADADADA EXEC OUTPUT - $'bb\ndd\nxx\nzz' ERROR - $'sort exit E35 1 D [3] "aa" sort exit E35 2 A [3] "bb" sort exit E35 3 D [3] "cc" sort exit E35 4 A [3] "dd" sort exit E35 5 D [3] "ww" sort exit E35 6 A [3] "xx" sort exit E35 7 D [3] "yy" sort exit E35 8 A [3] "zz"' EXPORT SORT_E35_STATUS=A EXEC -lsync,control=merge.ss y z INPUT merge.ss $'MERGE FIELDS=(1,2,CH,A)\nMODS E35=(E35,100,test)' INPUT y $'aa\nbb\ncc\ndd' INPUT z $'ww\nxx\nyy\nzz' OUTPUT - $'aa\nbb\ncc\ndd\nww\nxx\nyy\nzz' ERROR - $'sort exit E35 1 A [3] "aa" sort exit E35 2 A [3] "bb" sort exit E35 3 A [3] "cc" sort exit E35 4 A [3] "dd" sort exit E35 5 A [3] "ww" sort exit E35 6 A [3] "xx" sort exit E35 7 A [3] "yy" sort exit E35 8 A [3] "zz"' EXEC -lsync,control=merge.ss z y EXEC -lsync,control=merge.ss z y z OUTPUT - $'aa\nbb\ncc\ndd\nww\nww\nxx\nxx\nyy\nyy\nzz\nzz' ERROR - $'sort exit E35 1 A [3] "aa" sort exit E35 2 A [3] "bb" sort exit E35 3 A [3] "cc" sort exit E35 4 A [3] "dd" sort exit E35 5 A [3] "ww" sort exit E35 6 A [3] "ww" sort exit E35 7 A [3] "xx" sort exit E35 8 A [3] "xx" sort exit E35 9 A [3] "yy" sort exit E35 10 A [3] "yy" sort exit E35 11 A [3] "zz" sort exit E35 12 A [3] "zz"' EXEC -lsync,control=exit.ss z y z INPUT exit.ss $'SORT FIELDS=(1,2,CH,A)\nMODS E35=(E35,100,test)' TEST 14 'sort with E15 exit' EXPORT SORT_E15_STATUS=MMMMMMMMC EXEC -lsync,control=sort.ss c d b a INPUT sort.ss $'SORT FIELDS=(1,2,CH,A)\nMODS E15=(E15,100,test)' INPUT a $'aa\nzz' INPUT b $'bb\nyy' INPUT c $'cc\nxx' INPUT d $'dd\nww' OUTPUT - $'az\nbb\ncx\nww\nxx\nyy\nzz' ERROR - $'sort exit E15 1 M [3] "cx" sort exit E15 2 M [3] "xx" sort exit E15 3 M [3] "dd" sort exit E15 4 M [3] "ww" sort exit E15 5 M [3] "bb" sort exit E15 6 M [3] "yy" sort exit E15 7 M [3] "az" sort exit E15 8 M [3] "zz"' EXPORT SORT_E15_STATUS=MMMMMMMMC EXEC -lsync,control=sort.ss c d b a INPUT sort.ss $'SORT FIELDS=(1,1,CH,A,2,1,CH,D)\nMODS E15=(E15,100,test)' INPUT a $'aa\nab' OUTPUT - $'az\nab\nbb\ncx\nww\nxx\nyy' ERROR - $'sort exit E15 1 M [3] "cx" sort exit E15 2 M [3] "xx" sort exit E15 3 M [3] "dd" sort exit E15 4 M [3] "ww" sort exit E15 5 M [3] "bb" sort exit E15 6 M [3] "yy" sort exit E15 7 M [3] "az" sort exit E15 8 M [3] "ab"' TEST 15 'duplicate key diagnostic' EXEC -lsync,control=empty.ss,duplicates c d b a INPUT empty.ss INPUT a $'aa\ndd' INPUT b $'bb\nyy' INPUT c $'cc\naa' INPUT d $'dd\nww' OUTPUT - $'aa\naa\nbb\ncc\ndd\ndd\nww\nyy' ERROR - $'2 duplicate keys' EXEC -u -lsync,control=empty.ss,duplicates c d b a OUTPUT - $'aa\nbb\ncc\ndd\nww\nyy' TEST 16 'base name size/suffix mapping' EXEC -lsync,control=empty.ss a b.b c.c.c INPUT empty.ss INPUT a%123.foo $'a123foo' INPUT b%123.0z $'b0z' INPUT b.b%123.1z $'b1z' INPUT c%123.0z $'c0z' INPUT c.c%123.1z $'c1z' INPUT c.c.c%123.2z $'c2z' OUTPUT - $'a123foo\nb1z\nc2z' EXEC -lsync,control=empty.ss a e.e INPUT e.e%789.1z $'b1z' OUTPUT - ERROR - $'sort: e.e%789.1z: format f789 incompatible with a%123.foo format f123' EXIT 1