Listing of file='SLD.LOPR' on disk='vmedia/701-2721C.wvd.zip'
# Sector 738, program filename = 'SLD.LOPR'
0010 REM % "SLD.LOPR"
0030 X=2
: Y=15
0050 PRINT HEX(06);AT(0,39,40);"Condition Box Display";
: PRINT AT(X,0,Y*80);AT(X+Y-5,20);"Use AND to remain in this condition box"
;AT(X+Y-4,22);"Use OR to begin a new condition box";
0070 PRINT AT(X+Y+1,0,);AT(23,40);"CANCEL/EDIT - Previous screen";AT(22,43);"E
XEC/RUN - Select AND or OR";AT(21,49);"'4 - Exit";AT(20,49);"'3 - Review
Definition";
: G1=MAX(POS(-STR(G$(),1,LEN(G$())-1)="\C1"),POS(-STR(G$(),1,LEN(G$())-1)="
\CF"),1)
: IF G1>1THEN G1=G1+1
: GOSUB '97(G1,X+1,4)
: DIM S$(2)3
0140 S$(1)="AND"
: S$(2)="OR"
: O=1
0160 PRINT AT(MOD(O,2)+X+Y-2,37);". ";S$(MOD(O,2)+1);AT(O+X+Y-3,37);HEX(0E8B20
);S$(O);HEX(0F);
: KEYIN A$
: IF A$<>HEX(04)THEN 300
: GOSUB 610
: COM CLEAR G8$()
: IF G$()<>" "THEN G$()=G$()&HEX(FF)
: S=VAL(STR(K9$,7,1))
: L=VAL(STR(K9$,8,1))
: X$=STR(K9$,S,8)
: MAT COPY K9$<S+8,L-8>TO K9$<S,L-8>
: STR(K9$,L+S-8,8)="@MENU"
: LOAD TX$
0300 IF A$<>HEX(F0)THEN 370
: GOSUB 610
: PRINT AT(X,0,);
: G1=MAX(POS(-STR(G$(),1,LEN(G$())-1)="\C1"),POS(-STR(G$(),1,LEN(G$())-1)="
\CF"))
: STR(G$(),G1+1)=" "
: STR(G8$(),260,8)="SLD.FVAL"
: LOAD T"SLD.PLIN"
0370 IF A$=" "OR A$=HEX(08)THEN O=MOD(O,2)+1
: IF A$=HEX(82)THEN 450
: IF A$<>HEX(03)THEN 160
: GOSUB 610
: STR(G8$(),252,8)="SLD.LOPR"
: LOAD T"SLD.RDEF"
0450 PRINT AT(X+3,0,(Y-(X+1))*80);
: IF O=1THEN PRINT AT(X+3,2);BOX(0,-G);AT(X+2,INT(G/2));"AND";
: IF O=2THEN PRINT AT(X+4,INT(G/2));"OR";AT(X+6,2);BOX(3,G);BOX(1,INT(LGT(B
+1))+2);B+1;
: PRINT AT(19,40,39);AT(20,40,39);AT(21,49,30);AT(22,54,25);"Continue";AT(2
3,54);"Previous screen ";
: PRINT AT(14,10);" OK? ";AT(21,0,40);
0500 IF O=1THEN H=4
: ELSE H=3
0510 KEYIN A$
: IF A$<>HEX(82)AND A$<>HEX(F0)THEN 510
: PRINT AT(X,2);BOX(-H,-G);BOX(-1,-2);BOX(-1,-3);BOX(-1,-4);AT(X+6,2);BOX(-
3,-G);BOX(-1,-2);BOX(-1,-3);BOX(-1,-4);" ";AT(X,0,);
: IF A$=HEX(82)THEN 570
: IF A$=HEX(F0)THEN 50
: GOTO 510
0570 IF O=1THEN G$()=G$()&"\C1"
: ELSE G$()=G$()&"\CF"
: LOAD T"SLD.FNAM"
0590 DEFFN'0
: SCRATCH T"SLD.LOPR"
: SAVE T()"SLD.LOPR"
: PRINT "'SLD.LOPR' SAVED"
: LIST DT
: RETURN
0600 DEFFN'16"RENUMBER 0-1000";HEX(0D);
0610 PRINT AT(X,2,3*80);BOX(-3,-G);BOX(-1,-2);BOX(-1,-3);BOX(-1,-4);
: RETURN
3020 DEFFN'97(G1,R,C)
: G0=G1-1
: GOSUB '98(G1)
: GOSUB '99(R,C)
: PRINT AT(R-1,C-2);BOX(3,0);AT(R-1,2+G);BOX(3,0);
: IF G0=0OR G$(G0)="\CF"THEN PRINT AT(R-1,C-2);BOX(0,G);
: IF G$(G2)<>"\C1"THEN PRINT AT(R+2,C-2);BOX(0,G);
: MAT SEARCHG$(),="\CF"TO R9$()STEP 1
: J=1
3150 IF VAL(STR(R9$(),J,2),2)>=G2OR VAL(STR(R9$(),J,2),2)=0THEN 3180
: J=J+2
: GOTO 3150
3180 B=(J-1)/2+1
: PRINT AT(R,C-2);BOX(0,INT(LGT(B))+2);AT(R-1,C+INT(LGT(B)));BOX(1,0);AT(R-
1,C-2);B;
: RETURN
3210 % SCRATCH T "SLD.97 ": SAVE T() "SLD.97 "3000,3999 : PRINT "'SLD.97
' SAVED": LIST DT
3340 DEFFN'98(G1)
: DIM F$20,O$28,O$(7)28,I$(3)64,T$(3)1,L(3),L$1
: G2=POS(STR(G$(),G1)=HEX(00))
: IF G2>0THEN 3400
: RETURN
3400 F$=STR(G$(),G1,G2-1)
: G1=G1+G2
: MAT SEARCH"=#<>\BC\BE@",=STR(G$(),G1,1)TO O$STEP 1
: O$(1)="IS EQUAL TO"
: O$(2)="IS NOT EQUAL TO"
: O$(3)="IS LESS THAN"
: O$(4)="IS GREATER THAN"
: O$(5)="IS LESS THAN OR EQUAL TO"
: O$(6)="IS GREATER THAN OR EQUAL TO"
: O$(7)="IS BETWEEN"
: O=VAL(O$,2)
3460 O$=O$(O)
: G1=G1+1
: G9=0
: MAT L=ZER
: T$(),I$()=" "
3500 G9=G9+1
: T$(G9)=STR(G$(),G1,1)
: G1=G1+1
: IF T$(G9)="F"THEN G2=POS(STR(G$(),G1)=HEX(00))
: ELSE G2=POS(STR(G$(),G1)>="\C1")
: IF G2=0THEN G2=LEN(G$())-G1+2
: I$(G9)=STR(G$(),G1,G2-1)
: G2=G1+G2-1
: L(G9)=LEN(I$(G9))
: IF T$(G9)="F"THEN G2=G2+1
: G1=G2+1
: IF STR(G$(),G2,1)="\EF"THEN 3500
: L$=G$(G2)
: RETURN
3630 % SCRATCH T "SLD.98 ": SAVE T() "SLD.98 " 4000,4500 : PRINT "'SLD
.98 ' SAVED"
3650 DEFFN'99(R,C)
: DIM G2(3)
: MAT G2=ZER
: PRINT AT(R,C);F$;" ";O$;" ";
: A=0
: D=0
: IF L(3)>0THEN L=3
: ELSE IF L(2)>0THEN L=2
: ELSE L=1
: FOR I=1TO L
: IF T$(I)="C"THEN D=D+1
: NEXT I
: M=INT((69-LEN(F$)-LEN(O$)-2*D-6*(L-1)-INT(O/7))/L)
: FOR I=1TO L
: IF L(I)>MTHEN A=A+1
: NEXT I
: M=INT((69-LEN(F$)-LEN(O$)-2*D-6*(L-1)-A-INT(O/7))/L)
: G=0
3990 FOR I=1TO L
: IF L(I)<MTHEN G=G+M-L(I)
: NEXT I
: IF A>0THEN M=M+INT(G/A)
: A=0
: FOR I=1TO L
: IF L(I)>MTHEN A=A+1
: NEXT I
: FOR I=1TO L
: IF L(I)>MTHEN G2(I)=M
: ELSE G2(I)=L(I)
: PRINT HEX(020402000E0202020F);
: IF T$(I)="C"THEN PRINT HEX(22);STR(I$(I),1,G2(I));HEX(22);
: ELSE PRINT STR(I$(I),1,G2(I));
: IF G2(I)<>L(I)THEN PRINT "*";
: PRINT HEX(0F);
: IF I<LAND O<>7THEN PRINT " OR ";
4150 IF I<LAND O=7THEN PRINT " AND ";
: NEXT I
: G=6+LEN(F$)+LEN(O$)+6*(L-1)+INT(O/7)+2*D+G2(1)+G2(2)+G2(3)+A+1
: PRINT HEX(0202000F020402000F);
: RETURN
4210 % SCRATCH T "SLD.99 ": SAVE T() "SLD.99 " 5000,5999 : PRINT "'SLD.9
9 ' SAVED"