Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
att
GitHub Repository: att/ast
Path: blob/master/src/cmd/sortlib/sync/sort.tst
1810 views
# 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