+e e @@@@@@@@K@201800 BGROUNDS$(23) ! SCREEN BACKGROUNDSK@H01900 !SCREEN$(23)*78,SPEC$(90),TEMP1$*78 ! SCREEN INFORMATION K@802000 FUNCTION$(8)*32 ! FUNCTION DESCRIPTIONSIK@,02100 INPUT$(99)*43 ! SCREEN INPUTK@F02200 HELP_$(19)*28,HELPSPEC$(19) ! HELP SCREEN INFORMATION K@N02300 .RECORD$*255,DUMMY$*255,CURRENT$*255,DEFAULT$*129  ! WORK AREAS K@202400 COMMENT$(15)*43 ! COMMENTS BUFFEREK@402500  FILEST$*128 ! FILE STATEMENT BUFFERAK@602600 ALTS$(10)*129 ! ALTS STATEMENT BUFFERLK@<02700 RECORDS$(10)*129 ! RECORDS STATEMENT BUFFER9K@202800  MASK$*129 ! MASK STATEMENT BUFFER K@<02900 MASTER$*32,WORK$*32,FILENAME$*32  ! FILE NAME@@ !a@G@@)o@ " A@@@^@N ^@QZc^@NH2H2H2H2H2H2H2H2H2H2H2H2H2H2H2H2H2H2Hc^@kH6H6H6H6H6H6H6H6H6H6H6H6H6H6H6H6H6H6Hc^@H6H6H6H6H6H6H6H6H6H6H6H6H6H6H6H6H6H6H^@H^@H@@ ^@'o@ ^@i @@T@L@05300 "Prepare Sort Menu"L@(05400 "Description of Prepare Sort"L@ 05500 "Create control file"L@05600 "Add sort group"pL@05700 "Change sort group"L@05800 "Insert sort group"L@05900 "Delete sort group"L@ 06000 "Print control file"e@@ $B@B@ !a@@  A@#"f A@o A@o9o@@@ BdJ}Do@4o@@@B@  A@"o4o@   A@"o4o@4o@@@yo@"oa@  A@@!o@@Ho@@ " A@Ro@o@"oa@P@P@@!Z@![@P@ " A@V@P@@Xo@a@@@yo@"oa@  A@@!#o@@Ho@@Ro@o@"oa@P@P@@!Z@![@P@ " A@V@P@@Xo@a@@@yo@"oa@  A@@!o@@Ho@@o@"oa@@$ " A@Ro@]o@o@"oa@ " A@P@P@@!Z@![@P@ " A@V@P@@Xo@a@@@yo@"oa@  A@@!o@@Ho@@o@"oa@@$ " A@Ro@o@"oa@ " A@P@P@@!Z@![@ " A@V@P@@Xo@a@@@yo@"oa@  A@@!o@@Ho@@o@"oa@@$ " A@]o@ " A@P@P@@!Z@![@P@ " A@V@P@@Xo@a@@@o@"o?o@@o@"o?o@@o@"o?o@@o@"o?o@@o@"o?o@@4o@"o?o@@a@@@yo@"oa@  A@@!o@@o@"o?o@@@%&oo@':();oo@'o!*a@'o*P@+(*[@ ' A@@@B@#,#-!R. A@#/ A@0#1 A@ 2 A@@%&o o@,#*a@#*a@ *x@ *x@3#*a@ *x@@@  A@!/o@@@%&oo@ !d4oo@ 22 A@52!0!Q*a@ *x@@!67!d7!R8*a@!69:!d7!R8*a@ *x@@@%;o o@ !d4o$o@<=o@# # A@ o@>>"o@;>o>= #5$!0!Q A>= # A@ > o@@<=&o@# # A@ $o@?# A@>>+o@>7 A@*>? #67 !d7!R8 A@ >(o@ S@ o@@@P@%;o<o@@>><=5o@>#> # A@ >3o@?# A@0#@ A@3# A@ S@ AS@@Xo@a@@@"oAoAo@ Bo@a@@ !a@'o!*a@n@@@B! A@#C:D;oEC A@DoED A@!#No@a@![@P@a@@@ B@   A@ B@B@  A@ F A@ G A@ H A@a@@@!wo@!d IJo]o@@!dKoio@F<oFF A]o@F A@# L!d A@ # MN!d A@ # O:!d A@]o@@) !d IPo Q:!d A@@ !d IRopo@GSoGG A]o@G# Q:!d A@]o@@Q!d ITouo@HSoHH A]o@H#,:!d A@]o@@ !d I4o]o@Q:!d A@a@@@ $B@B@oo@T# AE"fo@# !d A#!d A@V#E"fo@##!d A## !d A@@<  A@"oa@)U#!R"fo A@&#V:#;o A@#o A@oo@@#o$ A@ # A@ C# A@ D# A@#D:C;oEC A@DoED A@a@@@ $B@WB@@X  A@"o?o@"Y#"fo A@oo@@%Z#"foyoo@k@@@  A@,BdJ}Do@@![@V@k@@@ $B@B@#$"a!0 A@@[  A@"o?o@-# \:]];o A@oo@@ $] A@a@@@ $B@#^ A@#_ A@@`  A@"oa@&#_:#a;o A@"b#"fo A@oo@@ %# A@ (# A@a@@@ $B@WB@@,  A@"oa@"Y#"fo A@oo@@'c#"fod"o@a@@@ e$B@ oB B@@f  A@"oa@@>><o@> A@@K#g!R #g!R #h!R"o@ >o@a@@@ i$B@B@#j A@S#W A@i#k A@@   l A@>>io@# loo>#  m A@ >o@@f#f#!d A@nf  A@"oa@"oS#"foS A@"p#"fo A@)U,#!R"fo, A@&,#V:q#;oq A@)UQ#!R"foQ A@&Q#V:<#;o< A@ #o  A@)U#!R"fo A@&#V:#;o A@#o A@oo@@f#of#r A@ s s A@t"o@a@@@ $B@B@   A@ G A@ G# l A@G# l A@@>>o@9 " :G# " ;oo>#  m A@( " oGSG "` Ao@ G# l A@G# l A@ >o@@h  A@"oa@#oo@# \o A@-u# I!R"fo A@oo@@ s s A@' " vo "oo@   A@& o w A  l A@B@o@@ o "o@a@@@ q$B@B@ #x A@ H A@@ HH A@HSoa H# A@HoHyS@>>q#o@( !!o%o>#  m A@ >!o@@0q  A@ ":#;oa@0q#:q#"f;oq A@&{ # I"fo  A@*#:# \;o A@*#:# \;o A@"|#"fo A@o%o@@ s s A@}"o@B@ #x A@o@@@  $B@B@#x A@ #~ A@  l A@   A@  A@@  A@oS@@>> Bo@# loDo>#  m A@ >@o@@   A@"oa@:#;oUo@" #"fo  A@&# I"fo A@*# \:#;o A@*# \:#;o A@!:#;o A@oDo@@ s s A@& o  A  l A@B@#x A@ #~ A@So=o@@ "o@a@@@ $B@B@@  A@a@@@ $B@B@@L  A@a@@@%oo@ @@@@@  A@:;owo@ouo@ $B@t@=#!! A@o=# A@o@3#3#!! A@3#o3# A@  A@!##!0!` A@ # #!RA@ $B@##W!` A@ S@ #S@@1:;o##!` A@o!p@ S@1:;o##!` A@  A@@   A@oo@@@#A@##S@:;owo@'o  t@  A@ 4  A@  A@ot@ot@o t@ S@##!` A@ S@##!` A@}o@g@@@oo@>>"po@(>#!do> Ao@o@ >o@g@@@ osf@ s A@"p A@>>o@>#oo@ >o@o@@ # A@>>o@." >#" *ol># A@ >o@ s A@g@@@7o o 4"b Ag@@@o\o@ \ A@ ] A@]"! o@ \ A@g@@@omo@l"f A@o"  A@  !d A@m "a!d A@g@@@o "o@oo@!o@!o@$ !d I4o A@o@@ " A@g@@@oIo@  A@>>" o@>>!d"f A@ o>>!dA@ >o@ I A@g@L(<x  @   lLG  4  NI`  (   HC T  J Z z  H  )t+-<&6JB  h !n"0v#~$%\B&(n'$()*P+,-|.,'/DLG0ni1 2p3 48@5B6`7dx89,H:; &(<X Q?8S@0mAL&tB@6vChxDxE<F@G< H 04 Il F J @V K4!0 L! M! N`" O"8 P(# !Q#0 #R#H *ST$X ,T$0 >U%0 EV% LW% `XH& hY& pZ' r[t'2 \'Z ]<(l ^( _) `h) a)0 b0* c* d*@ e\+0J f+ ` g$,z h, i,8 jP- k-0 l.( m|.08 n.0J oD/ \ %p/v 9q 0 Arp0 Is0 Kt81 [u1 kv2 swd2Px2dy,3vz30{3|X4}4@~ 505 5L6468D7vx707@808 9 l9 90& 4:08& :0L- : ^4 `;xH ;Z (<b <j <l T=| =  >2 >X >l H?~ ?0 @ t@ @@ #48|X#5| #6}#7d}#8}#9,~#:~($ ;~P$+<Xp`$-=$4> $8?@$:@,$<ALh%_B@&%lC2%pDxHB%rE܂ ^%F@%G%H@%Il%JЄ %K4 6&L(j&M& N`H&OĆ&P(&&Q'*R@',STH'.Tb'7Uz'AV'JW'SXH']Y'gZ'q[t({\؋(]<@"(^8^(_<(`h(a̍,(b0<)c>)db)e\)f)3g$0)Mh)TiL *VjPR*k,b*l<*m|*n0*oD +pl+q ,mxȖV,qy,@f,sz,u{,|X<,} -~ -L.JH\.LL .b .v .x 4/ܛ<^/@/ //l/Н0+4 :09 0]0x`0|ğ@0~(101J1THZ1<1 1<12H<&2f2#r2't@2)ؤ2+<825*3OH:3Qhl3a̦3j03n@3p3r\44$F4HV4<4P 4<5(5|85R5D^5!@n5# 5%p53ԭ5B85QH6S H6id b6}ȯ 6,<667X,7L7 X7@h77L7 7H7x 08.ܴ J8B@<8e8w<8ylZ9жf94@v99 9`:ĸ:( V:p: :T:8:+ &;l8;yD;}H@T;;;t;ؽ;<;<$<h R<̿ P> >%| >L >fD >? z? $EX0E\H@@E^rE`EntEwE<EHE F h VF! F"0 K!?@K!@ PK!ALX&hX&@X&*aY*a]*La_* ba*|Jb*x8zb*8b*@ b*02c*Hc*lHXc*|c*4c*c* c*`c+ ,d+(Pd++ dF+ dg+Tdt+ e~+NEfzwy TT!%p T8%obddnmwmw&lw!lwEMT  ,5@L`jt}1CTdx  / L _ x , e m &01000! REPLACE PRESORT/PRESORT01100! *****F012008! ***** PROGRAM CREATES AND MAINTAINS SORT CONTROL FILES .01300 ! ***** 11/18/83 BY MAX W. RUBOW F014008! ***** COPYRIGHT (C) 1983 BY AMERICAN BUSINESS COMPUTER 01500! *****01600! 001700ALLOCATE: ! ***** ALLOCATE MEMORY03000! T 03100! ***** SET OPTIONS03200NEWPAGE03300103400)%8O03500DUMMY=SHIFT(1) 03600! M.03700FORMS: ! ***** FORMS STATEMENTS 03800SCREEN1: 23*C 78A$03900SCREEN2:  N 2,90*V 17E04000MESSAGE1: X 78,V 28,X 50,V 28,X 50,V 28,X 50,V 28,X 50,V 28,X 50,V 28,X 50,V 28,X 50,V 28,X 50,V 28,X 50,V 28,X 50,V 28,X 50,V 28,X 50,V 28,X 50,V 28,X 50,V 28,X 50,V 28,X 50,V 28,X 50,V 28,X 50,V 2804100MESSAGE2: X 107,V 24,X 54,V 24,X 54,V 24,X 54,V 24,X 54,V 24,X 54,V 24,X 54,V 24,X 54,V 24,X 54,V 24,X 54,V 24,X 54,V 24,X 54,V 24,X 54,V 24,X 54,V 24,X 54,V 24,X 54,V 24,X 54,V 24,X 54,V 24,X 54,V 2404200MESSAGE3: X 132,V 24,X 54,V 24,X 54,V 24,X 54,V 24,X 54,V 24,X 54,V 24,X 54,V 24,X 54,V 24,X 54,V 24,X 54,V 24,X 54,V 24,X 54,V 24,X 54,V 24,X 54,V 24,X 54,V 24,X 54,V 24,X 54,V 24,X 54,V 24,X 54,V 2404300FORM1: V 128204400FORM2: V 12804500! F*04600DEFINE: ! ***** DEFINE DATA,04700#99: "NAME= PSSCREEN",,,A*04800#99,4900:  MAT BGROUNDS$04900 X 105,23*V 1205000! 1.05100 ! ***** DEFINE PRESORT FUNCTIONSN05200 MAT FUNCTION$06100! r(06200MENU: ! ***** MENU DRIVER06300INPUT$(1)=INPUT$I06400 INPUT$=("")06500NEWPAGE06600! E:06700MENULOOP:  DUMMY=FNENTER(99,0,2,0,LASTREAD)EP06800&FUNCTION=POS ("12345679",INPUT$(1),1) ! SAVE POINTER TO FUNCTIONV(06900( FUNCTION<1 , LASTREAD=1&07000( LASTREAD>0 ,,MENULOOP07100! R407200MAINLOOP: ! ***** MAIN PRESORT DRIVER\07300)FUNCTION  DESCRIBE,CREATE,ADD,CHANGE,INSERT,DELET,PRINTER,DONE07400,MENU07500! N207600DESCRIBE: ! ***** DESCRIBE PRESORTN07700 INPUT$=(""):07800!DUMMY=FNENTER(99,FUNCTION,3,0,0)  ! SCREEN 1 07900(CMDKEY=9 ,,MENU:08000!DUMMY=FNENTER(99,FUNCTION,4,0,0)  ! SCREEN 2 08100(CMDKEY=9 ,,MENU08200,MENU08300! N*08400ADD: ! ***** ADD SORT GROUP08500 FILENAMEE08600(CMDKEY=9 ,!08700MASTER$=FILENAME$08800! T208900#1: "NAME= "&MASTER$,,9NOFILEI09000! :(09100 OPENWORK ! OPEN WORK FILE09200! PB09300DUMMY=FNCOPYFILE(1,2,99) ! COPY MASTER TO WORKFILE,09400 CLEAR09500 ENTRY09600(CMDKEY=9 ,!09700#1: 09800#2: 09900! 2&10000#1: "NAME= "&WORK$,,U(10100#2: "NAME= "&MASTER$,,P10200#2: 2F10300DUMMY=FNCOPYFILE(1,2,99) ! COPY WORKFILE BACK TO MASTER10400#1,: 10500#2: 10600! 210700 SUCCESS 10800!010900! 211000CREATE: ! ***** CREATE CONTROL FILE11100 FILENAMEE11200(CMDKEY=9 ,!11300MASTER$=FILENAME$11400! TH11500#*1: "NAME= "&MASTER$&",SIZE= 512,RECL= 128",,9EXISTS11600! :(11700 OPENWORK ! OPEN WORK FILE11800! P11900 CLEAR12000 ENTRY12100(CMDKEY=9 ,!12200#1: 12300#2: 12400! 2&12500#1: "NAME= "&WORK$,,U(12600#2: "NAME= "&MASTER$,,P12700#2: 2F12800DUMMY=FNCOPYFILE(1,2,99) ! COPY WORKFILE TO MASTER FILE12900#1,: 13000#2: 13100! 213200 SUCCESS 13300!013400! 013500CHANGE: ! ***** CHANGE SORT GROUP13600 FILENAMEE13700(CMDKEY=9 ,!13800MASTER$=FILENAME$13900! T214000#1: "NAME= "&MASTER$,,9NOFILEI14100! :(14200 OPENWORK ! OPEN WORK FILE14300! P14400 GROUPSS14500(CMDKEY=9 ,!14600! E*14700DUMMY=FNCOPYFILE(1,2,GROUP-1)14800 CLEAR14900 RGROUPP15000 ENTRY15100(CMDKEY=9 ,!&15200DUMMY=FNCOPYFILE(1,2,99)P15300#1: 15400#2: 15500! 2&15600#1: "NAME= "&WORK$,,U(15700#2: "NAME= "&MASTER$,,P15800#2: 2&15900DUMMY=FNCOPYFILE(1,2,99)E16000#1,: 16100#2: 16200! 216300 SUCCESS 16400!016500! 016600INSERT: ! ***** INSERT SORT GROUP16700 FILENAMEE16800(CMDKEY=9 ,!16900MASTER$=FILENAME$17000! T217100#1: "NAME= "&MASTER$,,9NOFILEI17200! :(17300 OPENWORK ! OPEN WORK FILE17400! P17500 GROUPSS17600(CMDKEY=9 ,!17700! E*17800DUMMY=FNCOPYFILE(1,2,GROUP-1)17900 CLEAR18000 ENTRY18100(CMDKEY=9 ,!&18200DUMMY=FNCOPYFILE(1,2,99)P18300#1: 18400#2: 18500! 2&18600#1: "NAME= "&WORK$,,U*18700#2: "NAME= "&FILENAME$,,P&18800DUMMY=FNCOPYFILE(1,2,99)N18900#1,: 19000#2: 19100! 219200 SUCCESS 19300!019400! 019500DELET: ! ***** DELETE SORT GROUPT19600 FILENAMEE19700(CMDKEY=9 ,!19800MASTER$=FILENAME$19900! T220000#1: "NAME= "&MASTER$,,9NOFILEI20100! :(20200 OPENWORK ! OPEN WORK FILE20300! P20400 GROUPSS20500(CMDKEY=9 ,!20600! E*20700DUMMY=FNCOPYFILE(1,2,GROUP-1)20800 RGROUPP&20900DUMMY=FNCOPYFILE(1,2,99)P21000#1: 21100#2: 21200! 2&21300#1: "NAME= "&WORK$,,U(21400#2: "NAME= "&MASTER$,,P21500#2: 2&21600DUMMY=FNCOPYFILE(1,2,99)E21700#1,: 21800#2: 21900! 222000 SUCCESS 22100!022200! @22300ENTRY: )! ***** ENTER PRESORT SCREENS INFORMATION22400 SUMMARY"22500(CMDKEY=9 ,,CANCEL22600! E22700 COMMENT"22800(CMDKEY=9 ,,CANCEL22900! E23000 FILESTT"23100(CMDKEY=9 ,,CANCEL23200! E23300 ALTSS"23400(CMDKEY=9 ,,CANCEL23500! E23600 RECORDS"23700(CMDKEY=9 ,,CANCEL23800! E23900 MASKK"24000(CMDKEY=9 ,,CANCEL24100! E 24200!024300! 224400PRINTER: ! ***** PRINT CONTROL FILE24500 FILENAMEE24600(CMDKEY=9 ,!24700MASTER$=FILENAME$24800! T224900#1: "NAME= "&MASTER$,,9NOFILEI25000! :25100 IOTYPEE"25200(CMDKEY=9 ,,CANCEL25300! E625400 OPEN_PRINTER: ! ***** OPEN PRINTER FILE&25500( DIRECT$="1" ,,PREPARE<25600(!LIST>0 AND PRINTER$=LAST_PRINTER$ ,,PREPARE(25700(LIST>0 ,# 255: NEWPAGEE 25800(LIST>0 ,#255: ,25900#255: "NAME= //"&PRINTER$,,26000LIST=1"26100! T026200PREPARE: ! ***** PREPARE TO LISTO26300 SCREEN$=("")P826400*SCREEN$(1)=RPAD$(FUNCTION$(8),72)&"06-167" 626500)SCREEN$(3)="Sort control file - "&MASTER$226600$SCREEN$(22)="Sort group number - 1"T26700GROUPS=1226800! U(26900( DIRECT$="1" ,,LISTLOOPO 27000#255: FUNCTION$(8))27100#255: SCREEN$(3))27200#255: 27300#255: 27400#255: SCREEN$(23)27500#255: 27600! 2227700LISTLOOP: ! ***** LIST MAIN DRIVER 627800RECORD$=DUMMY$ ! SAVE LAST RECORD READ 027900#1,FORM1: DUMMY$ 8ENDLIST28000! ,.28100LIST: ! ***** PRINT DETAIL LINE&28200( DIRECT$="1" ,,DISPLAY.28300(RECORD$(1:4)<>"MASK" ,,LIST2T28400GROUPS=GROUPS+1@28500#0255: "Sort group number - ";LPAD$(STR$(GROUPS),2))28600#255: 28700! 2<28800LIST2: ##255: "* ";RPAD$(DUMMY$(1:64),64);" *"628900#%255: "* ";RPAD$(DUMMY$(65:128),64);" *""29000#255: 29100! 2.29200DISPLAY: ! ***** MODIFY DISPLAY(29300( DIRECT$="3" ,,LISTLOOPO029400(RECORD$(1:4)<>"MASK" ,,DISPLAY229500"DUMMY=5 )20,29600SCREEN$(DUMMY)=SCREEN$(DUMMY+3)29700#DUMMY29800"LOOP=1 )3p29900(LOOP=2 ,=SCREEN$(LOOP+20)="Sort group number - "&LPAD$(STR$(GROUP),2) -SCREEN$(LOOP+20)=""30000#LOOP30100! O(30200DISPLAY2: "DUMMY=5 )20,30300SCREEN$(DUMMY)=SCREEN$(DUMMY+3)30400#DUMMY30500SCREEN$(21)=""S30600"LOOP=1 )2 30700DUMMY=(LOOP-1)*64+1H30800;SCREEN$(LOOP+21)="* "&RPAD$(DUMMY$(DUMMY:DUMMY+64),64)&" *"30900#LOOP*31000MAT BGROUNDS$: MAT SCREEN$$31100,LISTLOOP31200! S231300ENDLIST: ! ***** END LIST FUNCTION31400#1: (31500( DIRECT$="3" ,,ENDLIST2T31600! C31700"LOOP=5 )20*31800SCREEN$(LOOP)=SCREEN$(LOOP+3)31900#LOOP32000SCREEN$(21)=""C232100%SCREEN$(22)="Press Enter to continue"32200SCREEN$(23)=""e*32300MAT BGROUNDS$: MAT SCREEN$$(32400"23,2,C 1,UHA,N": DUMMY$$32500! I 32600ENDLIST2:  SUCCESS 32700!832800! *32900CANCEL: ! ***** CANCEL JOBMB33000( FUNCTION>2 ,#1: 933100 -#1,: 93310033100#2,: 9332002 33200!033300! 33400DONE: NEWPAGE(33500(LIST>0 ,# 255: NEWPAGEE 33600.033700! 033800OPENWORK: ! ***** OPEN WORK FILE0$33900WORK$="PRESORT.W"&WSID$@34000(VOLID$>"" OR DRIVE$>"" ,WORK$=WORK$&"/"&VOLID$434100( DRIVE$>"" ,WORK$=WORK$&"/"&DRIVE$$F34200#(2: "NAME= "&WORK$&",SIZE= 512,RECL= 128",,934400T 34300!1&34400#2: "NAME= "&WORK$,,P34500#2: 2 34600!234700! 834800CLEAR: "! ***** CLEAR BUFFER/DEFAULT AREAS34900 COMMENT$=("")35000 FILEST$="""35100 ALTS$=("") 35200 RECORDS$=("")35300MASK$=""(35400 COMMENTS=0"35500ALTSS=035600 RECORDSS=0 35700!035800! <35900RGROUP: %! ***** READ SORT GROUP INTO DEFAULTS236000#1,FORM1: RECORD$ 8ENDGROUP636100(FNFOLD$(RECORD$(1:3))="SUM" ,,RGROUPU36200! L*36300(RECORD$(1:1)><"!" ,,37100>36400( COMMENTS<5 ,COMMENTS=COMMENTS+1 -,RGROUP$36500DUMMY=(COMMENTS-1)*3+1E*36600COMMENT$(DUMMY)=RECORD$(2:44).36700 COMMENT$(DUMMY+1)=RECORD$(45:87)N.36800!COMMENT$(DUMMY+2)=RECORD$(88:128)36900,RGROUP37000! RF37100(FNFOLD$(RECORD$(1:4))="FILE" ,FILEST$=RECORD$(6:128)37200! L637300(FNFOLD$(RECORD$(1:4))><"ALTS" ,,37800637400(ALTSS<10 ,ALTSS=ALTSS+1 -,RGROUP(37500ALTS$(ALTSS)=RECORD$(6:128)37600,RGROUP37700! R837800(FNFOLD$(RECORD$(1:6))><"RECORD" ,,38300@37900( RECORDSS<10 ,RECORDSS=RECORDSS+1 -,RGROUPG.38000!RECORDS$(RECORDSS)=RECORD$(8:128)38100,RGROUP38200! R838300(FNFOLD$(RECORD$(1:4))><"MASK" ,,RGROUPU"38400MASK$=RECORD$(6:128)<38500ENDGROUP: !038600! P838700FILENAME: ! ***** ENTER CONTROL FILENAMEU38800INPUT$(3)=INPUT$E38900 INPUT$=("")<39000( FUNCTION < 3 ,,LOOPA ! Describe or create39100INPUT$(1) = FILENAME$ !: (!(DUMMY := POS(FILENAME$,"/")) > 1 ,!: #INPUT$(1) = FILENAME$(1:DUMMY - 1) !: #INPUT$(2) = FILENAME$(DUMMY + 1:99)139200(!(DUMMY := POS(INPUT$(2),"/")) > 0 ,!: $INPUT$(3) = INPUT$(2)(DUMMY + 1:99) !: "INPUT$(2) = INPUT$(2)(1:DUMMY - 1) 39300! M>39400LOOPA: 'DUMMY=FNENTER(99,FUNCTION,5,3,LASTREAD)E39500(CMDKEY=9 ,!D39600(%POS (" 12345",RPAD$(INPUT$(3),1),1)=0 , LASTREAD=33<39700(INPUT$(3)="5" AND INPUT$(2)="" , LASTREAD=2*39800( INPUT$(1)="" , LASTREAD=1$39900( LASTREAD>0 ,,LOOPAP40000! RL40100(INPUT$(1) <> FILENAME$ , GROUP = 0 ! clear default group 40200FILENAME$=INPUT$(1)40300VOLID$=INPUT$(2)140400DRIVE$=INPUT$(3) H40500(DRIVE$>"" OR VOLID$>"" ,FILENAME$=FILENAME$&"/"&VOLID$<40600( DRIVE$>"" ,FILENAME$=FILENAME$&"/"&DRIVE$$ 40700!040800! 840900EXISTS: !! ***** FILE TO BE CREATED EXISTS41000INPUT$(1)=INPUT$T41100 INPUT$=("N")U41200! U>41300LOOPB: (DUMMY=FNENTER(99,FUNCTION,34,1,LASTREAD)"41400(CMDKEY=9 ,,CANCEL841500(POS ("YNyn",INPUT$(1),1)=0 , LASTREAD=1$41600( LASTREAD>0 ,,LOOPBP41700! R@41800(POS ("Nn",INPUT$(1),1)>0 , FILENAME -,ERASE 41900+042000! 442100NOFILE: ! ***** NO CONTROL FILE FOUND42200 LASTREAD=1 \42300)FUNCTION ,DESCRIBE,CREATE,ADD,CHANGE,INSERT,DELET,PRINTER,DONE42400! T242500ERASE: #2: "NAME= "&FILENAME$,,*42600#2,: ! FREE EXISTING FILE 42700+042800! 242900GROUPS: ! ***** ENTER GROUP NUMBERA43000INPUT$(1)=INPUT$ 43100 INPUT$=(""),43200INPUT$(1) = STR$(MAX(1,GROUP)) 43300! U>43400LOOPK: (DUMMY=FNENTER(99,FUNCTION,37,1,LASTREAD)"43500(CMDKEY=9 ,,CANCELN43600(0FNVERIFY(INPUT$(1))=0 OR NUMERIC<1 OR NUMERIC>99 , LASTREAD=1$43700( LASTREAD>0 ,,LOOPKP43800! R43900 GROUP=NUMERIC 44000!044100! 644200IOTYPE: ! ***** INPUT/OUTPUT DIRECTIONR44300INPUT$(2)=INPUT$/44400 INPUT$(1)="2"44500INPUT$(2)="10"44600! U@44700IOLOOP: (DUMMY=FNENTER(99,FUNCTION,31,2,LASTREAD)N44800(CMDKEY=9 ,!B44900(#INPUT$(2)<>"10" AND INPUT$(2)><"11" , LASTREAD=22645000(POS("123",INPUT$(1),1)<1 , LASTREAD=1$45100( LASTREAD>0 ,,IOLOOP45200! R45300DIRECT$=INPUT$(1) 45400PRINTER$=INPUT$(2) 45500!345600! B45700SUMMARY: )! ***** ENTER SUMMARY STATEMENT SELECTION245800INPUT$(1)=INPUT$R45900 INPUT$=("N")U46000! U>46100LOOPC: 'DUMMY=FNENTER(99,FUNCTION,8,1,LASTREAD)I46200(CMDKEY=9 ,!846300(POS ("YNyn",INPUT$(1),1)=0 , LASTREAD=1$46400( LASTREAD>0 ,,LOOPCP46500! R46600(POS ("Yy",INPUT$(1),1)>0 ,#2,FORM2: g"SUM Sort complete,Records were read,Records were selected,Records were output,Press Enter to continue"u 46700!046800! 446900COMMENT: ! ***** ENTER SORT COMMENTSS47000INPUT$(15)=INPUT$@47100( FUNCTION<4 , INPUT$=("") -INPUT$=COMMENT$E47200! T>47300LOOPD: (DUMMY=FNENTER(99,FUNCTION,11,1,LASTREAD)47400(CMDKEY=9 ,!47500! E47600"LOOP=1 )5 47700DUMMY=(LOOP-1)*3+1 l47800#2,FORM2: O"!"&RPAD$(INPUT$(DUMMY),43)&RPAD$(INPUT$(DUMMY+1),43)&RPAD$(INPUT$(DUMMY+2),41)47900#LOOP 48000!048100! 448200FILEST: ! ***** ENTER FILE STATEMENTY48300INPUT$(12)=INPUT$48400 INPUT$=("")48500 INPUT$(9)="R"48600INPUT$(10)="N" 48700INPUT$(12) = "SHRI"48800! U.48900DEFAULTE: DEFAULT$=FILEST$&"," 49000"LOOP=1 )12L49100( DEFAULT$<="," ,,LOOPE -INPUT$(LOOP)=FNNEXT$(DEFAULT$)U49200#LOOP49300! O249400LOOPE: INPUT$(11) = INPUT$(11)(1:1)649500)DUMMY=FNENTER(99,FUNCTION,14,11,LASTREAD)49600(CMDKEY=9 ,!:49700(POS ("NAna",INPUT$(10),1)=0 , LASTREAD=10:49800(POS ("ABRabr",INPUT$(9),1)=0 , LASTREAD=9D49900(%POS (" 12345",RPAD$(INPUT$(8),1),1)=0 , LASTREAD=88<50000(INPUT$(8)="5" AND INPUT$(7)="" , LASTREAD=7D50100(%POS (" 12345",RPAD$(INPUT$(6),1),1)=0 , LASTREAD=66<50200(INPUT$(6)="5" AND INPUT$(5)="" , LASTREAD=5*50300( INPUT$(4)="" , LASTREAD=4D50400(%POS (" 12345",RPAD$(INPUT$(3),1),1)=0 , LASTREAD=33<50500(INPUT$(3)="5" AND INPUT$(2)="" , LASTREAD=2*50600( INPUT$(1)="" , LASTREAD=1$50700( LASTREAD>0 ,,LOOPEP50800! R:50900(INPUT$(11) > "" ,INPUT$(11) = "REPLACE""51000DUMMY$=FNINPUT$,51100#2,FORM2: "FILE "&DUMMY$$ 51200!051300! ,51400ALTS: ! ***** ALTS STATEMENT$51500INPUT$(3)=INPUT$A51600 INPUT$=("")51700 CURRENT$=""51800ALTSS=1&51900DEFAULT$=ALTS$(ALTSS)&","52000ALTS$(ALTSS)=","T52100! S&52200DEFAULTF: "LOOP=1 )3h52300()LEN(DEFAULT$)<=1 AND LEN(ALTS$(ALTSS))<=1 ,,LOOPF -INPUT$(LOOP)=FNNEXT$(DEFAULT$)UF52400(LEN(DEFAULT$)<=1 ,ALTSS=MIN(10,ALTSS+1) -,NEXTFN&52500DEFAULT$=ALTS$(ALTSS)&","52600ALTS$(ALTSS)=","T52700NEXTF: #LOOP52800! N>52900LOOPF: (DUMMY=FNENTER(99,FUNCTION,41,3,LASTREAD)53000(CMDKEY=9 ,!$53100( INPUT$(1)="" ,,ENDF453200(FNVERIFY(INPUT$(2))=0 , LASTREAD=22J53300(,POS ("ROEQ",RPAD$(FNFOLD$(INPUT$(1)),2),1)=0 , LASTREAD=1$53400( LASTREAD>0 ,,LOOPFP53500! R53600DUMMY$=FNINPUT$P53700(LEN(CURRENT$&DUMMY$)>127 ,#2,FORM2:  CURRENT$ -,5390053800 CURRENT$=""Z53900( CURRENT$="" ,CURRENT$="ALTS "&DUMMY$ -CURRENT$=CURRENT$&","&DUMMY$M54000 INPUT$=("")54100,DEFAULTF54200! F@54300ENDF: ( CURRENT$>"" ,#2,FORM2: CURRENT$$ 54400!054500! 254600RECORDS: ! ***** RECORDS STATEMENTF54700INPUT$(7)=INPUT$R54800 INPUT$=("")54900 INPUT$(4)="C"55000 RECORDSS=0C55100! O,55200DEFAULTG: RECORDSS=RECORDSS+1@55300( RECORDSS > 10 ,!-DEFAULT$=RECORDS$(RECORDSS)655400( RECORDSS > 1 ,"1,33,G 2": RECORDSS55500"LOOP=1 )7P55600(RTRM$(DEFAULT$)="" ,,LOOPG -INPUT$(LOOP)=FNNEXT$(DEFAULT$)55700#LOOP55800! O>55900LOOPG: (DUMMY=FNENTER(99,FUNCTION,22,7,LASTREAD)*56000(CMDKEY=9 OR INPUT$(1)="" ,!R56100(4INPUT$(7) > "" AND POS ("ANDORandor ",INPUT$(7),1)=0 , LASTREAD=7F56200('POS ("BCLNPDZD",FNFOLD$(INPUT$(4)),1)=0 , LASTREAD=44F56300('INPUT$(3) = "" OR FNVERIFY(INPUT$(3))=0 , LASTREAD=33F56400('INPUT$(2) = "" OR FNVERIFY(INPUT$(2))=0 , LASTREAD=22856500(POS ("OIoi",INPUT$(1),1)=0 , LASTREAD=1$56600( LASTREAD>0 ,,LOOPGP56700! R56800DUMMY$=FNINPUT$.56900#2,FORM2: "RECORD "&DUMMY$$57000 INPUT$=("")57100 INPUT$(4)="C"57200,DEFAULTG57300! F:57400MASK: %! ***** PROCESSING FOR MASK STATEMENT57500INPUT$(4)=INPUT$I57600 INPUT$=("")57700 INPUT$(3)="C"57800 INPUT$(4)="A"457900DEFAULT$=MASK$&"," ! APPEND DELIMITER58000 CURRENT$=""58100 SCREENS=058200! EB58300MASKLOOP: SCREENS=SCREENS+1 ! MASK SCREEN NUMBERE658400( SCREENS>1 ,"6,24,G 3,H,N": SCREENS58500! ED58600"LOOP=1 )4 (! RETREIVE DEFAULTS FROM EXISTING RECORDL58700( DEFAULT$<="," ,,LOOPH -INPUT$(LOOP)=FNNEXT$(DEFAULT$)U58800#LOOP58900! O>59000LOOPH: (DUMMY=FNENTER(99,FUNCTION,27,4,LASTREAD)59100(CMDKEY=9 ,!659200(SCREENS>1 AND INPUT$(1)="" ,,ENDMASKS859300(POS ("ADad",INPUT$(4),1)=0 , LASTREAD=4F59400((POS ("ABCLNPDZD",FNFOLD$(INPUT$(3)),1)=0 , LASTREAD=3F59500('FNVERIFY(INPUT$(2))=0 OR INPUT$(2) = "" , LASTREAD=22F59600('FNVERIFY(INPUT$(1))=0 OR INPUT$(1) = "" , LASTREAD=11859700(SCREENS=1 AND INPUT$(1)="" , LASTREAD=1$59800( LASTREAD>0 ,,LOOPHP59900! R660000DUMMY$=FNINPUT$ ! SAVE FIELDS W/COMMASAZ60100( CURRENT$="" ,CURRENT$="MASK "&DUMMY$ -CURRENT$=CURRENT$&","&DUMMY$M60200 INPUT$=("")60300 INPUT$(3)="C"60400 INPUT$(4)="A"&60500( SCREENS<10 ,,MASKLOOP60600! E060700ENDMASK: #2,FORM2: CURRENT$ 60800!060900! 861000SUCCESS: ! ***** SUCCESSFUL PREPARE SORT 61100INPUT$(1)=INPUT$E61200 INPUT$=("")61300! U861400LOOPI: !DUMMY=FNENTER(99,FUNCTION,40,0,0) 61500!061600! 261700FAILURE: ! ***** PREPARE SORT FAILS61800INPUT$(1)=INPUT$A61900 INPUT$=("")62000! U862100LOOPJ: "DUMMY=FNENTER(99,FUNCTION,44,0,99) 62200!062300! *62400! ***** SCREEN ENTRY FUNCTION862500&,FNENTER(FILENO,FUNCTION,SCREEN,HELPS,LAST)62600(! FILENO is screen file number !: D! FUNCTION is starting menu action.. Create Change Add etc !: /! SCREEN is prompting screen number !: 5! HELPS is number of help messages on file !: #! LAST is number of last field read>62700 LASTHELP=0 $! CLEAR POINTER TO LAST HELP MESSAGE,62800(LAST>0 AND LAST<99 ,,ENTERA*62900(SCREEN=LASTSCR ,,DEFAULTS63000SPEC$(90)=SPEC$<63100#FILENO,SCREEN1,42*SCREEN:  MAT SCREEN$&63200TEMP1$=RTRM$(SCREEN$(20))63300(>TEMP1$=" Version 3.0" ,CSCREEN$(20)=" Version 3.1""463400#FILENO,SCREEN2: NUMBER,MAT SPEC$,63500SCREEN$(23)=RTRM$(SCREEN$(23)) 63600(>SCREEN$(23)=" Or (O) or And (A) connective _ Optional" ,639000SCREEN$(1)(1:32)=RPAD$(FUNCTION$(FUNCTION+1),32) 64000SPEC$(NUMBER)=SPEC$:64100-SPEC$(NUMBER)=SREP$(SPEC$(NUMBER),1,"UH","N")*64200MAT BGROUNDS$: MAT SCREEN$$F64300DEFAULTS: *MAT SPEC$: MAT INPUT$,FUNCTION$(FUNCTION+1)64400! SZ64500ENTERA: (LAST>0 AND LAST<99 ,*SPEC$(LAST)=SREP$(SPEC$(LAST),1,"UH","RC") 64600(LAST>0 ,BELL;;$64700MAT SPEC$: MAT INPUT$P64800(LAST>0 AND LAST<99 ,*SPEC$(LAST)=SREP$(SPEC$(LAST),1,"RC","UH") 64900LASTREAD = LAST = 065000! TL65100ENTERB: SEARCH=FNFIND("?")  ! FIND ANY HELP MESSAGE REQUESTS,65200(SEARCH=0 ,,ENTER ! FNEND65300! C*65400HELP: ! ***** HELP MESSAGES$65500INPUT$(SEARCH)(1:1)=" ",65600SPEC$(SEARCH): INPUT$(SEARCH):65700(SEARCH>HELPS OR SEARCH=LASTHELP ,,ENTERAR\65800( LASTHELP=0 ,#FILENO,SCREEN2,42*(SCREEN+1)+1: DUMMY,MAT HELPSPEC$$65900LASTHELP=SEARCH66000&RECORD=2*(SCREEN+INT((SEARCH+2)/3)+1)  ! HELP MESSAGE SCREEN NUMBER !: r! Help messages are defined 3 to a screen following the prompt screen and help message format screen.@66100DUMMY=FNMODULOS(SEARCH-1,3)+1 ! MESSAGE 1, 2 OR 3p66200(DUMMY=1 ,#FILENO,MESSAGE1,4RECORD:  MAT HELP_$ !: ! Read column of message textH66300(DUMMY=2 ,#FILENO,MESSAGE2,4RECORD:  MAT HELP_$H66400(DUMMY=3 ,#FILENO,MESSAGE3,4RECORD:  MAT HELP_$(66500MAT HELPSPEC$: MAT HELP_$@666002SPEC$(LASTHELP)=SREP$(SPEC$(LASTHELP),1,"UH","RC") $66700MAT SPEC$: MAT INPUT$@668002SPEC$(LASTHELP)=SREP$(SPEC$(LASTHELP),1,"RC","UH") 66900,ENTERB67000ENTER: '67100! F067200"! ***** SEARCH INPUT FOR CHARACTERP67300&FNFIND(SEARCH$*1)&67400"LOOP=1 )UDIM(INPUT$,1)@67500(INPUT$(LOOP)(1:1)="?" , FNFIND=LOOP -,6770067600,FIND67700#LOOP67800FIND: '067900! N(68000! ***** FORMAT INPUT STRING68100&FNINPUT$*128P68200 FNINPUT$="""68300DUMMY=UDIM(INPUT$,1)N68400"LOOP=1 )DUMMY*68500(INPUT$(LOOP)>"" ,,COMMASA68600#LOOP68700,INPUTS68800! P(68900COMMAS: DUMMY$=INPUT$(1)M69000"LOOP=2 )DUMMYT69100(!LEN(DUMMY$)+LEN(INPUT$(LOOP))<255 ,DUMMY$=DUMMY$&","&INPUT$(LOOP))69200#LOOP69300FNINPUT$=DUMMY$69400INPUTS: '069500! 69600! ***** MODULOSP69700&FNMODULOS(NUMBER,BASE)=ROUND((NUMBER/BASE-INT(NUMBER/BASE))*BASE,0)69800! O$69900! ***** VERIFY NUMERICR"70000&FNVERIFY(STRING$*18)C70100 FNVERIFY=0R70200 NUMERIC=0.70300NUMERIC = VAL(STRING$) !VERIFY70400 FNVERIFY=1A70500VERIFY: '070600! 470700'! ***** REMOVE NEXT PARAMETER FROM LIST&70800&FNNEXT$*128(STRING$*129) &70900DUMMY=POS (STRING$,",",1)271000(DUMMY=0 ,DUMMY = LEN(STRING$)+11,71100DEFAULT$=DEFAULT$(DUMMY+1:129)I.71200!FNNEXT$=STRING$(1:MAX(0,DUMMY-1))71300NEXTS: '71400! F271500$! ***** COPY A NUMBER OF SORT GROUPS1.71600&#FNCOPYFILE(FILEIN,FILEOUT,NUMBER)071700COPYLOOP: (NUMBER=0 ,,ENDCOPY471800#FILEIN,FORM1: DUMMY$ 8ENDCOPY*71900#FILEOUT,FORM1: DUMMY$$Z72000(FNFOLD$(DUMMY$(1:4))="MASK" ,NUMBER=NUMBER-1 ! DECREMENT GROUPS COPIED72100,COPYLOOP72200! P$72300ENDCOPY:  FNCOPYFILE=172400COPYFILE: '072500! E272600%! ***** FOLD LOWER CASE TO UPPER CASE&72700&FNFOLD$*128(STRING$*128)P072800#DUMMY$="ABCDEFGHIJKLMNOPQRSTUVWXYZ"$72900"LOOP=1 ) LEN(STRING$)J73000=DUMMY=POS ("abcdefghijklmnopqrstuvwxyz",STRING$(LOOP:LOOP),1)B73100(DUMMY>0 ,&STRING$(LOOP:LOOP)=DUMMY$(DUMMY:DUMMY))73200#LOOP73300FNFOLD$=STRING$73400FOLD: '0