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 X<D7 THEN 1228	! IS VALUE LESS THAN DETECTION LIMIT?
1237	GOSUB 12000 :
	IF INSTR(1,X$,",")=0% THEN IF VAL(X$)=0% THEN 1228
1239	IF N2%>4% 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 <CR>"; :
	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 <ALT> OR <ESC> 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

