1 !!! PAMCAL V04A-2 R. LEAVITT 20-AUG-76 EDIT 2 08-JUL-77 !!! PESTICIDE RESEARCH CENTER, MICHIGAN STATE UNIV. !!! PROGRAM OUTPUTS DATA AS INITIATED BY OPTION 5 !!! OF PAMILA. CHAIN IN POINT IS LINE 31000 (PAMSTD 2 !!! CHAINS TO HERE) WHICH ALLOWS RESET OF 3 !!! S9%(1),S9(0),S$(100,20), WHERE !!! S9%(0)=# OF SAMPLES, !!! S9%(1)=# OF WINDOWS (CPD NAMES), AND !!! S9(0)=DETECTION LIMIT !!! S$(100,20) IS AS FOLLOWS: !!! 4 !!! 0 1 2 .... !!! 0 CONC CPD 1 CPD 2 .... !!! UNITS NAME NAME !!! 1 SAMP 1 CONC CONC .... !!! 2 SAMP 2 CONC CONC .... !!! . . . . . !!! . . . . . !!! . . . . . !!! . . . . . 50 INPUT "OPTION";Q% : IF Q%<4% AND Q%>0% THEN ON Q% GOTO 70,30000,17000 55 PRINT "OPTIONS ARE:" : PRINT "1 RELIST OUTPUT" : PRINT "2 CHANGE CONC UNITS" : PRINT "3 CORRECT SAMPLE DATA" : GOTO 50 70 GOSUB 18000 80 DIM #4%,C2(100,2) : ON ERROR GOTO 16000 : OPEN "SAMPS.DAT" FOR INPUT AS FILE 4% : IF S2%=0% THEN S1%=1% 100 DIM #1%,D(20,4) : OPEN "STDCUR.VES" FOR INPUT AS FILE 1% : DIM #5%,S9%(1),S9(0),S$(100,20) : OPEN "CALDAT.ARY" FOR OUTPUT AS FILE 5% : S9(0)=0 : S$(0,I%)="" FOR I%=0% TO 20% 105 DIM #2%,K1$(0)=32%,C$(100)=8%,C(100,20) : OPEN "RNOPAL" FOR INPUT AS FILE 2% : X$=K1$(0) : IF Q%=0% THEN 115 ELSE PRINT "DEFAULT OUTPUT IS ";X$;". GIVE CHANGE IF ANY"; : INPUT LINE A$ 110 A$=LEFT(A$,LEN(A$)-1%) : I%=ASCII(RIGHT(A$,LEN(A$))) : IF I%=10% OR I%=13% THEN 110 ELSE IF LEN(A$) THEN X$=A$ 115 OPEN X$ FOR OUTPUT AS FILE 6% : N1%=C(0,0) : N2%=C(0,1) : N3%=C(0,2) ! # RUNS, # WINDOWS, WINDOW # 117 ON ERROR GOTO 13000 : FOR I%=1% TO N1% : IF VAL(C$(I%))<=100 THEN 130 123 I1%=I1%+1% : C(I1%,J%)=C(I%,J%) FOR J%=0% TO N2% : S$(I1%,0),C$(I1%)=C$(I%) 130 NEXT I% : C(0,0)=I1% : S9%(0)=I1% : S9%(1)=C(0,1) : ON ERROR GOTO 0 : IF LEFT(SYS(CHR$(7)),1)<>"*" THEN PRINT "REPORT ID"; : INPUT LINE A$ : A$="*"+A$ : A$=SYS(CHR$(8)+A$) 153 IF S1%=0% THEN GOSUB 14000 155 DIM W1$(20),W(20) : A$="" : IF N3%<1000% THEN X$=NUM$(N3%) ELSE X$=NUM$(N3%-1000%) : A$="DK1:" ! FIND OUT WHERE WINDOW FILE IS 157 A$=A$+"$WINDOW."+X$ : DIM #3%,W8$(0)=32%,W9$(20),W9(20,1) : OPEN A$ FOR INPUT AS FILE 3% : FOR I%=0% TO W9(0,0) : W(I%)=W9(I%,0) : S$(0,I%),W1$(I%)=W9$(I%) : NEXT I% : PRINT : CLOSE 3% 160 INPUT "LLOP";A$ : IF LEFT(A$,1)<>"Y" THEN 160 ELSE PRINT #6% 170 I%=1% : S$(0,0)=C$(0) : PRINT #6%,DATE$(0) : PRINT #6%,RIGHT(SYS(CHR$(7)),2) : IF N2%<5% THEN K1%=N2% ELSE IF I1%>4% THEN K1%=4% ELSE K1%=I1% 173 PRINT #6%,TAB(13%+7%*K1%);"***";C$(0);"***" : PRINT #6% 175 PRINT #6%,"SAMPLE #"; : IF N2%>4% THEN PRINT #6%," :"; ELSE GOTO 2000 ! ! ! ! FORMATING ROUTINE FOR MORE THAN 4 WINDOWS ! ! 180 FOR K1%=0% TO 3% : IF K1%+I%>I1% THEN 193 190 PRINT #6%,TAB(27%+14%*K1%-LEN(C$(K1%+I%)));C$(K1%+I%); : NEXT K1% 193 PRINT #6% : PRINT #6% : FOR K1%=1% TO N2% : PRINT #6%,W1$(K1%); : FOR J1%=0% TO 3% : IF I%+J1%>I1% THEN PRINT #6% : GOTO 260 221 GOSUB 1225 : NEXT J1% : PRINT #6% 260 NEXT K1% : I%=I%+4% : IF I%>I1% THEN 32000 280 PRINT #6% : PRINT #6% : GOTO 175 ! ! ! ! CALCULATING/PRINTING SUBROUTINE ! ! 1225 X=0 : S%(0)=0% : IF D(K1%,3)=-1 THEN X$="TFSTDS" : N1%=-1% : GOTO 1239 1227 IF C(I%+J1%,K1%)<>0 THEN 1229 1228 X$="N.D." : S%(2)=3% : GOTO 1239 1229 IF C(I%+J1%,K1%)>D(K1%,4) THEN S%(0),S%(1)=2% 1230 X=X+D(K1%,K%)*(C(I%+J1%,K1%)/10^D(K1%,3))^K% FOR K%=0% TO 2% : IF X<0 THEN X=0 1235 X=X*ABS(C2(0,0))*C2(I%+J1%,1)/(C2(I%+J1%,0)*C2(I%+J1%,2)) : IF X4% THEN D9%=J1% ELSE D9%=K1%-1% 1240 IF S%(0) THEN X$=X$+"*" 1241 PRINT #6%,TAB(27%+14%*D9%-LEN(X$)+S%(0)/2%);X$; : S$(I%+J1%,K1%)=X$ : RETURN ! ! ! ! FORMATING ROUTINE FOR 4 OR LESS WINDOWS ! ! 2000 PRINT #6%,TAB(24%+14%*(I%-1%)-LEN(W1$(I%))+3%);W1$(I%); FOR I%=1% TO N2%: PRINT #6% : J1%=0% : FOR I%=1% TO I1% : PRINT #6%,C$(I%); : FOR K1%=1% TO N2% : GOSUB 1225 : NEXT K1% : PRINT #6% : NEXT I% : GOTO 32000 ! ! ! ! PSUEDO PRINT USING SUBROUTINE ! ! 12000 X=INT(X*10.^D8%+.5)/10.^D8% : D9%=D8% : X$=NUM$(X) : X$=LEFT(X$,LEN(X$)-1%) : IF ABS(X)>=10^6 OR ABS(X)<10^-6 THEN IF X<>0 THEN X=9% : RETURN ! CHANGES X TO X$ WITH "," AND D8% DECIMAL PLACES 12030 IF ABS(X)<1 AND X<>0 THEN X$=LEFT(X$,1%)+"0"+RIGHT(X$,2%) 12040 IF D9%<1% THEN D9%=-1% : GOTO 12070 12050 X=INSTR(1%,X$,".") : IF X<>0 THEN 12060 ELSE X$=X$+"." : GOTO 12050 12060 IF LEN(X$)=X+D9% OR D9%<0% THEN 12070 ELSE X$=X$+"0" : GOTO 12060 12070 IF LEN(X$)>D9%+5% THEN X$=LEFT(X$,LEN(X$)-(D9%+4%))+","+RIGHT(X$,LEN(X$)-(D9%+3%)) 12100 RETURN ! ! ! ! ERROR IN TAKING VAL(C$(I%)) AT LINE 117 IMPLIES ! SAMPLE #, SO KEEP IT ! ! 13000 IF ERR<>52% THEN ON ERROR GOTO 0 ELSE RESUME 123 ! ! ! ! SUBROUTINE TO INPUT COMMON SAMPLE PARAMETERS ! ! 14000 GOSUB 17500 : PRINT : IF S2% THEN IF C2(0,0)=-1 THEN S2%=0% ! WILL NEED SAMPLE PARMS 14050 INPUT "WANT ANSWERS IN NG, UG/CM^2, PPM, PPB, OR PPT";C$(0): GOSUB 18000 : IF C$(0)="PPT" THEN C2(0,0)=.1E7 : GOTO 14200 14060 IF C$(0)="UG/CM^2" THEN C2(0,0)=1 : M1$(2)="AREA" : M2$(2)="CM^2" : GOTO 14200 14180 IF C$(0)="PPB" THEN C2(0,0)=1000 ELSE IF C$(0)="PPM" THEN C2(0,0)=1 ELSE C2(0,0)=-1 : FOR J1%=1% TO I1% : C2(J1%,K1%)=1 FOR K1%=0% TO 2% : NEXT J1% : GOTO 14800 14200 IF S2% THEN 14800 ELSE & : FOR K1%=0% TO 2% : PRINT "IF ALL SAMPLE ";M1$(K1%);"S WERE EQUAL THEN GIVE IN "; M2$(K1%);" ELSE "; : INPUT X : PRINT : IF X=0 THEN S%(K1%)=1% ELSE C2(J%,K1%)=X FOR J%=1% TO I1% 14500 NEXT K1% : IF S%(0) OR S%(1) OR S%(2) THEN I2%=1% : GOSUB 15000 14800 RETURN ! ! ! ! SUBROUTINE TO INPUT SAMPLE PARAMETERS WHEN THEY ! DIFFER FROM SAMPLE TO SAMPLE ! ! 15000 PRINT : PRINT "USE OR TO INPUT ANSWERS": PRINT : PRINT "SAMPLE #"; : FOR I%=0% TO 2% : IF S%(I%) THEN PRINT TAB(20%+20%*J1%);M1$(I%);",";M2$(I%); : J1%=J1%+1% 15400 NEXT I% : PRINT : PRINT : FOR K1%=I2% TO I1% : PRINT C$(K1%); : J1%=0% : FOR I%=0% TO 2% : IF S%(I%) THEN PRINT TAB(20%+20%*J1%); ELSE 15800 15700 INPUT C2(K1%,I%) : J1%=J1%+1% 15800 NEXT I% : PRINT : NEXT K1% : PRINT : PRINT 15900 RETURN 16000 IF ERR<>5% THEN ON ERROR GOTO 0 ELSE RESUME 31100 ! ! ! ! OPTION 3 CORRECT SAMPLE DATA ! ! 17000 OPEN "SAMPS.DAT" FOR INPUT AS FILE 4% : OPEN "RNOPAL" FOR INPUT AS FILE 2% : INPUT "SAMPLE #";A$ : GOSUB 17500 : GOTO 17200 IF A$=C$(I2%) FOR I2%=1% TO C(0,0) 17100 PRINT "SAMPLE # ";A$;" NOT IN FILE" : GOTO 32100 17200 I1%=I2% : S%(K%)=1% FOR K%=0% TO 2% : GOSUB 15000 : GOTO 32100 17500 DIM M1$(2),M2$(2) : M1$(0)="INJECTION VOLUMN" : M2$(0)="UL" : M1$(1)="FINAL VOLUMN" : M2$(1)="ML" : M1$(2)="ORIGINAL WEIGHT" : M2$(2)="GM" : RETURN 18000 INPUT "HOW MANY DECIMAL PLACES";D8% : INPUT "DETECTION LIMIT";D7 : RETURN ! ! ! ! OPTION 2 AND CHAIN IN POINT TO CHANGE CONC UNITS ONLY ! ! 30000 S2%=1% : GOTO 80 ! ! ! ! CHAIN IN POINT FROM PMSTD AND CAN BE USED TO ! CHANGE SAMPLE VARIABLES OR UNITS ! ! 31000 X$=SYS(CHR$(8)+"") 31100 OPEN "SAMPS.DAT" FOR OUTPUT AS FILE 4% : GOTO 100 ! ! ! ! PRINT TABLE FOOTNOTES AS REQUIRED ! ! 32000 PRINT #6% : PRINT #6% : IF S%(1)=2% THEN PRINT #6%,"*";CHR$(10);"VALUE OUTSIDE STANDARDIZATION "; "LIMITS" 32010 IF S%(2)=3% THEN PRINT #6%,"N.D. = NOT DETECTED"; : IF D7=0 THEN PRINT #6%,ELSE S9(0)=D7 : PRINT #6%,"; DETECTION LIMIT ="; : IF D7<1 THEN PRINT #6%," 0";RIGHT(NUM$(D7),2);C$(0) ELSE PRINT #6%,D7;C$(0) 32020 IF N1%=-1% THEN PRINT #6%,"TFSTDS = TOO FEW STANDARDS FOR QUANTITATION" 32030 PRINT #6%,CHR$(26) 32100 CLOSE 1%,2%,4%,5%,6% : END