N88 basicプログラムの質問(ノルム計算)1
N88 basicプログラムにおいて鉱物のノルム計算ができるようにしたいのですが、プログラムを打ち込んだのですが、うまく動きません。どなたかわかる方がいればご教授頂きたく願います。
かなり長くなりますが、ぜひともお願い致します。
下記、打ち込んだプログラムとなります。
長いので、質問を分けて入力します。
10 '
20 '***** normative calculation program for clay minerals ***** by T,Igarashi,1983
30 '
40 OPTION BASE 1
50 CONSOLE 0,25,0,1
60 WIDTH 40,25
70 '
80 '
90 DIM A$(22),DMY$(22),AA$(22),B1$(31),M$(8),L$(8)
100 DIM A(8,22),A1(22),A2(22),B(31),B0(8,31),C9(31),TOTAL(2,8)
110 GOSUB *INIT.1
120 ON ERROR GOTO 5000
130 GOSUB *ENTER
140 FOR QQ=1 TO NN
150 GOSUB *INIT.2
160 IF KORF=1 THEN GOSUB *FILE ELSE GOSUB *KEYBOARD
170 GOSUB *STORE
180 GOSUB *CALC
190 GOSUB *OUTPUT
200 NEXT QQ
210 GOSUB *PRINTOUT
220 GOTO 130
230 '
240 '
250 '
260 *INIT.1
270 RESTORE 290
280 FOR I=1 TO 22 : READ AA$(I) : READ A2(I) : NEXT
290 DATA SIO2,60.085,TiO2,79.899,Al2O3,101.961,Fe2O3,159.692,FeO,71.846,MnO,70.937,MgO,40.304,CaO,56.079,Na2O,61.979,K2O,94.195
300 DATA P2O5,141.943,Cl,35.453,SO3,80.57,S,32.6,Cr2O3,151.989,ZrO2,123.218,F,18.99,CO2,44.9,H2O+,18,H2O-,1,Ig.LOSS,1,Others,1
310 RESTORE 330
320 FOR I=1 TO 31 : READ B1$(I) : NEXT
330 DATA Q,C,ad,mi,ab,an,ka,se,ch,gi,mo,pp,dp,al,Z,hl,th,cc,mg,sd,li,mt,he,cm,pr,il,ru,ap,fr,en,ot
340 C9(1)=A2(1) : C9(2)=A2(3) : C9(3)=A2(1)+A2(3) : C9(4)=A2(10)+A2(3)+A2(1)*6 : C9(5)=A2(9)+A2(3)+A2(1)*6 : C9(6)=A2(8)+A2(3)+A2(1)*2 : C9(7)=A2(3)+A2(1)*2+A2(19)*2
350 C9(8)=A2(10)+A2(3)*3+A2(1)*6+A2(19)*2 : C9(9)=A2(7)*5+A2(3)+A2(1)*3+A2(19)*4 : C9(10)=A2(3)+A2(19)*3 : C9(11)=A2(9)*33+A2(3)+A2(7)+A2(1)*4+A2(19)*4 : C9(12)=A2(3)+A2(1)*4+A2(19)
360 C9(13)=A2(3)+A2(19) : C9(14)=A2(10)+A2(3)*3+A2(13)*4+A2(19)*6 : C9(15)=A2(1)+A2(16) : C9(16)=(A2(9)-16)/2+A2(12) : C9(17)=A2(9)+A2(13) : C9(18)=A2(8)+A2(18) : C9(19)=A2(7)+A2(18) : C9(20)=A2(5)+A2(18)
370 C9(21)=A2(4)+A2(19) : C9(22)=A2(4)+A2(5) : C9(23)=A2(4) : C9(24)=A2(5)+A2(15) : C9(25)=A2(5)-16+A2(14)*2 : C9(26)=A2(2)+A2(5) : C9(27)=A2(2) : C9(28)=A2(8)*10+A2(11)*3+A2(19)
380 C9(29)=A2(8)-A2(17)*2 : C9(30)=A2(1)+A2(7) : C9(31)=1 : DD=0
390 FOR I=1 TO 31 : B(I)=0 : NEXT
400 RETURN
410 '
420 '
430 '
440 *ENTER
450 C=0 : KORF=0 : SCREEN 3,3 : CLS 3 : SCREEN 3,0 : LINE(0,0)-(639,199),6,BF : COLOR 2
460 LOCATE 0,5 : PRINT "How many samples (Max 8 samples)";: INPUT NN
470 IF NN>8 THEN CLS 1 : GOTO 460
480 IF NN=0 THEN GOTO *PROEND
490 COLOR 2 : LOCATE 0,8 : PRINT "Input data from Keyboard or File or End : K/F/E"
500 Y$=INKEY$
510 IF Y$="" THEN 490
520 IF Y$="e" OR Y$="E" THEN GOTO *PROEND
530 IF Y$="k" OR Y$="K" THEN KORF=0 : RETURN
540 IF Y$<>"f" AND Y$<>"F" THEN 490
550 KORF=1
560 RETURN
570 '
580 '
590 '
600 *INIT.2
610 CLS 1
620 FOR I=1 TO 22 : A(QQ,I)=0 : NEXT I
630 FOR I=1 TO 31 : B(I)=0 : B0(QQ,I)=0 : NEXT I
640 RETURN
650 '
660 '
670 '
680 *FILE
690 OPEN "data.1" AS #1
700 FIELD #1,40 AS MINERAL$,40 AS L1$
710 FOR I=1 TO 22 : FIELD #1,(I-1)*4+80 AS DMY$(I),4 AS A$(I) : NEXT
720 MAX=LOF(1) : IF MAX=0 THEN RETURN 440
730 LOCATE 1,2 : PRINT MAX;"records are filing."
740 IF DD=1 THEN 800
750 LOCATE 2,5 : PRINT "You need list (Y/N)?": Y$=INKEY$
760 IF Y$"" THEN 750
770 IF Y$="N" OR Y$="n" OR Y$="ミ" THEN 800
780 IF Y$="Y" OR Y$="y" OR Y$="ン" THEN GOSUB *NAME.LIST : GOTO 800
790 GOTO 750
800 LOCATE 2,10 : INPUT "Record No.";N
810 IF N>MAX THEN CLS 1 : GOTO 730
820 GET #1,N
830 M$=MINERAL$ : L$=L1$
840 FOR I=1 TO 11 : A(QQ,I)=CVS(A$(I)) : A(QQ,I+11)=CVS(A$(I+11)) : NEXT
850 CLOSE #1 : DD=1
860 LOCATE 2,15 : PRINT "Correct data : Y/N"; : Y$=INKEY$
870 IF Y$="" THEN 860
880 IF Y$="Y" OR Y$="y" THEN C=1 : GOTO 1120
890 IF Y$="N" OR Y$="n" THEN RETURN 180
900 GOTO 860
910 '
920 '
930 '
940 *NAME.LIST
950 LPRINT
960 LPRINT CHR$(27) ; "V0960" ;CHR$(&H8)
970 LPRINT "Sample Name" ; TAB(40); "Locality"
980 LPRINT CHR$(27);"V0960";CHR$(&H8)
990 FOR II=1 TO MAX
1000 GET #1, II
1010 M$=MINERAL$ : L$=L1$
1020 LPRINT M$; TAB(40); L$
1030 NEXT
1040 LPRINT CHR$(27) ; "V0960";CHR$(&H8)
1050 LPRINT CHR$(12)
1060 RETURN
1070 '
1080 '
1090 '
1100 *KEYBOARD
1110 M$="" : L$="" : FOR I=1 TO 22 : A(QQ,I)=0 : NEXT I
お礼
ん~・・・まだ超初心者なので難しくてよく分かりません。 試行錯誤してみてもムリだったので自分なりの他の方法でやってみようとございます。 ありがとうございました。