1 !!! PAMSTD V04A-2 R. LEAVITT 20-AUG-76 EDIT 4 08-JUL-77 !!! PESTICIDE RESEARCH CENTER, MICHIGAN STATE UNIV. !!! PROGRAM IS ADAPTED FROM HP'S POLFTE AND IS USED !!! AS AN EXTENSION TO OPTIONS 11 & 12 OF PAM1 AND 2 !!! CALCULATES EXTERNAL STANDARD CURVES OF THE !!! FORM: AX^2 + BX + C !!! FOR EACH STANDARD IN THE WINDOW FILE. IT WILL, !!! IF DESIRED, CHAIN TO PAMCAL FOR DATA OUTPUT. 3 ! K1$=OUTPUT FILE FOR PAMCAL; C1(0,0)=# OF SAMPLES ! C1(0,1)=# OF WINDOWS; C1(0,2)=WINDOW FILE # ! D0(X,0)=CONST COEF; D0(X,1)=X COEF; D0(X,2)=X^2 COEF ! D0(X,3)=SCALE FACTOR; D0(X,4)=LARGEST STD 5 DIM #1%,K1$(0)=32%,C1$(100)=8%,C1(100,20) : OPEN "RNOPAL" FOR INPUT AS FILE 1% : DIM #3%,W8$(0)=32%,W9$(20),W9(20,1) : IF C1(0,2)<1000 THEN X=C1(0,2) ELSE X=C1(0,2)-1000 : D$="DK1:" ! W8$(0)=ID; W9$(0)=UPDATE; W9(0,0)=# WINDOWS ! D9(0,1)=TOLERANCE (DECIMAL) 7 DIM #4%,D3(20,4),D2(15,20) : OPEN "PAMSTD.PLT" FOR OUTPUT AS FILE 4% 10 OPEN D$+"$WINDOW."+NUM$(X) FOR INPUT AS FILE 3% : J2%=C1(0,1) : J3%=C1(0,0) : J4%=C1(0,2) : DIM D1(15,20) : H%=1% 15 DIM #2%,D0(20,4) : OPEN "STDCUR.VES" FOR OUTPUT AS FILE 2% : FOR I5%=1% TO 14% : ON ERROR GOTO 32 : GOTO 35 IF VAL(C1$(I%))<101% FOR I%=H% TO J3% 30 I5%=I5%-1% : GOTO 50 32 IF ERR<>52% THEN ON ERROR GOTO 0 ELSE I5%=I5%-1% : RESUME 40 35 D1(I5%,J%)=C1(I%,J%) FOR J%=0% TO J2% : D1(I5%,0)=VAL(C1$(I%)) 40 H%=I%+1% : NEXT I5% 50 CLOSE 1% : FOR J1%=1% TO J2% : C%,C9%=1% : D%=0% : FOR K%=1% TO I5% : IF D1(K%,J1%)=0 THEN D2(C9%,J1%)=0 ELSE D2(C9%,J1%),X(C%)=D1(K%,J1%) : Y(C%)=D1(K%,0)*W9(J1%,1) : C%=C%+1% 61 C9%=C9%+1% : NEXT K% : Z=X(1) : FOR I%=2% TO C%-1% : IF Z100 THEN Z=Z/10 : D%=D%+1% : GOTO 64 65 X(I%)=X(I%)/10.^D% FOR I%=1% TO C%-1% : D2(I%,J1%)=D2(I%,J1%)/10.^D% FOR I%=1% TO C9%-1% : D0(J1%,3)=D% : X(C%),Y(C%)=0 : M%,D2(0,0)=C% 70 DIM A(15),B(15),S(15),G(15),H(15),Q(15),P(15),X(15),Y(15),C(15) : Z=0 : O%=1% : IF M%<3% THEN D0(J1%,3)=-1 : GOTO 6300 900 T7,T8,W7=Z : FOR I%=1 TO M% : W7=W7+X(I%) : T7=T7+Y(I%) : T8=T8+Y(I%)^2 : NEXT I% : T9=(M%*T8-T7^2)/(M%^2-M%) 2300 FOR I%=1% TO M% : P(I%)=Z : Q(I%)=O% : NEXT I% : A(I%),B(I%),S(I%)=Z FOR I%=1% TO 11% : E1,F1=Z : W1=M% : I%=1% 2600 W=Z : W=W+Y(L%)*Q(L%) FOR L%=1% TO M% : S(I%)=W/W1 : IF I%-12%>=O% OR I%-M%>=O% THEN 3600 3100 E1=Z : E1=E1+X(L%)*Q(L%)*Q(L%) FOR L%=1% TO M% : E1=E1/W1 : A(I%+1)=E1 : W=Z 3400 FOR L%=1 TO M% : V=(X(L%)-E1)*Q(L%)-F1*P(L%) : P(L%)=Q(L%) : Q(L%)=V : W=W+V*V : NEXT L% : F1=W/W1 : B(I%+2)=F1 : W1=W : I%=I%+1% : GOTO 2600 3600 G(L%)=Z FOR L%=2% TO 11% : G(1)=O% : FOR J%=1% TO 3% : S1=Z : FOR L%=1% TO 3% : IF L%=1% THEN 4500 ELSE IF L%=2% THEN 4400 4300 G(L%)=G(L%)-A(L%)*G(L%-1%)-B(L%)*G(L%-2%) : GOTO 4500 4400 G(2)=G(2)-A(2)*G(1) 4500 S1=S1+S(L%)*G(L%) : NEXT L% : U(J%)=S1 : L%=3% : FOR I2%=2% TO 3% : G(L%)=G(L%-1%) : L%=L%-1% : NEXT I2% : G(1)=Z : NEXT J% : T=Z 5100 FOR L%=1% TO M% : C(L%)=Z : J%=3% : FOR I2%=1% TO 3% : C(L%)=C(L%)*X(L%)+U(J%) : J%=J%-1% : NEXT I2% : T3=Y(L%)-C(L%) : T=T+T3^2 : NEXT L% : IF M%<>3% THEN T5=T/(M%-3%) ELSE T5=0 5600 Q7=1-T/(T9*(M%-1%)) : FOR J%=1% TO 3% : D0(J1%,J%-1%)=U(J%) : NEXT J% 6300 NEXT J1% : PRINT : PRINT "STD CURVE(S) COMPLETE." : INPUT "WANT TO GRAPH ANY OF THE STD CURVES";X$ : IF LEFT(X$,1)<>"Y" THEN 6500 6400 FOR I%=1% TO J2% : D3(I%,J%)=D0(I%,J%) FOR J%=0% TO 4% : NEXT I% : D2(0,0)=J4% : D2(0,1)=I5%+1% : D2(I%,0)=D1(I%,0) FOR I%=1% TO I5% : D2(I5%+1%,0)=0 6410 D2(I5%+1%,I%)=0 FOR I%=1% TO J2% : CLOSE 2%,3%,4% : CHAIN "$FGRAPH" 20000 6500 CLOSE 2%,3%,4% : INPUT "WANT TO SEE CALCULATED DATA";X$ : IF LEFT(X$,1)="Y" THEN CHAIN "$PAMCAL" 31000 ELSE END