10 COM X[103,22],M[19,19],U[19,19],Q[20],V[20],P[78] 30 COM M$[60],N$[72] 40 COM N,K,N8,K8,N9,K9,Q9,Q7,Q5,Q4,Q3,Q2,Q1 45 COM I3,I4,U9,X$[20] 50 REM:11APR74 52 REM:>SAVF 100 DIM D$[72],C$[7],A[19] 110 FILES * 1000 IF Q9>1 THEN 1010 1002 PRINT "WANT EXPLANATION "; 1004 INPUT D$ 1006 IF D$[1,1]="N" THEN 1010 1008 GOSUB 2000 1010 IF Q[1]#0 THEN 1014 1012 GOTO 9929 1014 PRINT 1016 GOTO Q9 OF 1018,1022,1022 1018 PRINT "NAME OF OUTPUT FILE TO SAVE DATA MATRIX IS "; 1020 GOTO 1024 1022 PRINT "OUTPUT FILE NAME = "; 1024 INPUT C$ 1025 PRINT 1026 ASSIGN C$,1,Q8 1028 IF Q8 <= 2 THEN 1036 1030 PRINT C$" CANNOT BE FOUND." 1032 PRINT 1034 GOTO 1070 1036 IF Q8=0 THEN 1042 1038 PRINT "CANNOT WRITE ON "C$ 1040 GOTO 1032 1042 READ #1,1 1046 GOTO TYP(1) OF 1048,1050,1100 1048 READ #1;A 1049 GOTO 1058 1050 READ #1;D$ 1058 PRINT "WARNING!"'10C$" IS NOT NOW EMPTY." 1059 PRINT "IF YOU SAVE IDA DATA IN "C$" WITH 'SAVF'," 1060 PRINT "THE OLD CONTENT IN THE FILE WILL FIRST BE ERASED !!" 1062 PRINT 1064 PRINT "DO YOU WANT TO PROCEED WITH 'SAVF' "; 1066 INPUT D$ 1068 IF D$[1,1]#"N" THEN 1100 1070 GOSUB 1074 1072 GOTO 1022 1074 PRINT "WANT TO NAME ANOTHER OUTPUT FILE"; 1076 INPUT D$ 1078 IF D$[1,1]#"N" THEN 1096 1080 PRINT '10'13"IF YOU WISH, YOU MAY" 1082 IF Q9=3 THEN 1088 1084 PRINT "TYPE THE CHARACTER C WITH CONTROL KEY DEPRESSED," 1086 PRINT "RETURN CARRIAGE," 1088 PRINT "OPEN A FILE WITH A NEW NAME." 1090 PRINT "DO NOT USE 'KIL' OR YOU WILL LOSE YOUR DATA!" 1092 PRINT "THEN TYPE "'10"RUN-9998 "'10"TO GET BACK TO IDA." 1094 GOTO 9998 1096 RETURN 1100 N1=0 1102 FOR I=Q4 TO N 1104 IF X[I,K9+2]=0 THEN 1108 1106 N1=N1+1 1108 NEXT I 1110 REM:#ACTIVE ROWS IS N1 1112 PRINT "WANT ENTIRE ACTIVE DATA MATRIX SAVED "; 1114 INPUT D$ 1115 PRINT 1116 IF D$[1,1]="N" THEN 1190 1118 K1=K 1120 GOSUB 2100 1124 IF Z2>0 THEN 1131 1126 PRINT "YOU MUST DECLARE FEWER COL(S). OR USE A LARGER FILE." 1127 PRINT "WANT TO DECLARE FEWER COL(S). "; 1128 INPUT D$ 1129 IF D$[1,1]="N" THEN 1070 1130 GOTO 1190 1131 GOSUB 2300 1132 FOR I=1 TO K 1134 A[I]=I 1136 NEXT I 1140 GOTO 1700 1190 PRINT 1200 PRINT '10"DATA IN COLUMNS 1 THROUGH"K 1201 Z6=0 1202 IF Q[2]=0 THEN 1210 1203 Z6=2 1204 PRINT "FITTED VALUES IN COL."K9 1206 PRINT "RESIDUAL VALUES IN COL."K9+1 1208 PRINT 1210 PRINT "* SAVE HOW MANY COLUMNS ? "; 1212 ENTER 60,Q8,K1 1214 PRINT 1216 IF Q8>0 THEN 1219 1218 GOTO 1190 1219 IF K1=0 THEN 9996 1220 IF K1 <= 19 THEN 1223 1221 PRINT "CAN'T SAVE MORE THAN 19 COL(S)." 1222 GOTO 1200 1223 GOSUB 2100 1224 IF Z2>0 THEN 1234 1228 GOTO 1126 1234 GOSUB 2300 1236 PRINT 1238 GOTO Q9 OF 1240,1260,1260 1240 PRINT "GIVE"K1"COLUMN NUMBERS, SEPARATED BY COMMAS : " 1242 GOTO 1270 1260 PRINT "WHICH COL(S). ? "; 1270 MAT INPUT A[K1] 1280 FOR I=1 TO K1 1282 IF A[I]10 THEN 1830 1826 D$=M$[6*A[I]-5,6*A[I]] 1828 GOTO 1834 1830 Z=A[I]-10 1832 D$=N$[6*Z-5,6*Z] 1834 FOR J=6 TO 1 STEP -1 1836 IF D$[J,J]#" " THEN 1870 1838 NEXT J 1840 REM:NAME IS ALL BLANKS 1870 PRINT #1;D$[1,J] 1880 PRINT D$[1,J] 1890 NEXT I 1900 IF Q9>1 THEN 1904 1902 PRINT "YOU MAY ADD EXTRA TEXT, ONE LINE AT A TIME, TO DESCRIBE "C$ 1904 PRINT 1932 PRINT "WANT TO ADD SOME TEXT "; 1934 INPUT D$ 1936 IF D$[1,1]="N" THEN 9998 1938 PRINT 1940 PRINT "WHEN YOU ARE DONE, PRESS THE CARRIAGE RETURN ONLY." 1942 IF END #1 THEN 9998 1944 Z4=Z4 MIN 256 1946 Z4=Z4-1 1948 IF Z4<1 THEN 9998 1950 PRINT #1;"TEXT:" 1952 L=72 MIN (Z4*2) 1954 PRINT 1956 GOTO Q9 OF 1958,1962,1962 1958 PRINT "INPUT LINE OF LESS THAN"L+1"CHARACTERS." 1960 GOTO 1964 1962 PRINT "* INPUT < "L+1"CH." 1964 ENTER 250,Q8,D$ 1966 PRINT 1968 IF Q8>0 THEN 1972 1970 GOTO 1958 1972 IF D$="?" THEN 1958 1974 IF D$="" THEN 1992 1976 IF LEN(D$) <= L THEN 1984 1978 PRINT 1980 PRINT "LAST LINE TOO LONG. RE-ENTER." 1982 GOTO 1962 1984 PRINT #1;D$ 1985 Z=1+LEN(D$) 1986 Z4=Z4-1-INT(Z/2) 1988 IF Z4<1 THEN 1992 1990 GOTO 1952 1992 PRINT "DESCRIPTIVE TEXT SAVED AT END OF "C$ 1993 PRINT #1; END 1994 GOTO 9998 2000 PRINT "IF YOU HAVE OPENED A LARGE ENOUGH FILE IN YOUR ACCOUNT, YOU" 2001 PRINT "MAY SAVE FOR FUTURE USE THE VALUES IN ALL THE ACTIVE ROWS" 2002 PRINT "IN ALL THE COLUMNS OF YOUR DATA MATRIX, OR ANY OF THEM PLUS" 2003 PRINT "THE COLUMNS CONTAINING RESIDUALS AND FITTED VALUES," 2004 PRINT "IF YOU HAVE EXECUTED A REGRESSION." 2006 PRINT 2008 PRINT "DECLARE THAT FILE AS THE OUTPUT FILE IN 'SAVF'." 2010 PRINT "'SAVF' PRINTS:" 2012 PRINT "THE NUMBER OF ACTIVE ROWS" 2013 PRINT "THE NUMBER OF COLUMNS SAVED" 2014 PRINT "THE VALUES OF THE DATA MATRIX SAVED" 2015 PRINT "AND, IF YOU HAVE DECLARED NAMES FOR YOUR COLUMNS, AND THE" 2016 PRINT "FILE IS BIG ENOUGH," 2017 PRINT "THE WORD, 'NAMES:', FOLLOWED BY THE NAMES" 2018 PRINT "THE WORD, 'TEXT:', FOLLOWED BY YOUR DESCRIPTIVE TEXT [NO" 2019 PRINT "MORE THAN 512 CHARACTERS]." 2020 PRINT 2021 PRINT "THE COMMAND 'ENTER' WILL READ THESE NAMES." 2022 PRINT "THE COMMAND 'FILE' WILL PRINT OUT THE NAMES AND TEXT." 2024 PRINT 2030 RETURN 2100 Z=2*N1 2102 Z2=Z*K1+4 2110 Z3=4*K1+4 2200 R2=INT(.9999+(Z2/256)) 2210 IF END #1 THEN 2230 2220 FOR I=1 TO R2+1 2222 READ #1,I 2224 NEXT I 2226 R1=R2+1 2228 GOTO 2232 2230 R1=I-1 2232 Z1=R1*256 2234 IF Z1= Z3 THEN 2274 2268 Z3=0 2270 REM: NOT POSSIBLE TO INCLUDE NAMES 2272 GOTO 2278 2274 Z4=Z4-Z3-4 2276 IF Z4>2 THEN 2282 2278 Z4=0 2280 REM:NOT POSSIBLE TO INCLUDE DESCRIPTION 2282 RETURN 2300 IF Q3=0 THEN 2345 2301 IF Z3=0 OR Z4=0 THEN 2310 2302 GOTO 2345 2310 PRINT C$" NOT BIG ENOUGH TO HOLD:" 2311 PRINT 2312 IF Z3#0 THEN 2320 2314 PRINT "NAMES" 2320 IF Z4#0 THEN 2340 2322 PRINT "EXTRA TEXT" 2324 PRINT 2340 GOSUB 2360 2345 RETURN 2350 PRINT C$" CAN HOLD:" 2352 K2=INT((Z1-4)/Z) 2354 PRINT K2"COL(S). OF THE"N1"ACTIVE ROWS" 2360 IF Q3=0 THEN 2380 2370 K3=INT((Z1-8)/(4+Z)) 2372 PRINT "OR"K3"COL(S). WITH NAMES." 2374 PRINT 2380 RETURN 2400 PRINT "DON'T PANIC. IT'S A PROGRAMMING ERROR." 2410 PRINT "AND"'10"DON'T"'10"USE THE 'KIL' COMMAND IF YOU DON'T WANT TO LOSE YOUR DATA." 2420 PRINT C$" NOW CONTAINS THE FIRST"N2"ACTIVE ROWS OF THE "K1"COLS. YOU" 2430 PRINT "DECLARED. NOTIFY THE R.A. OR CALL J.ROBERTS, 798-8803 ABOUT BUG." 2432 PRINT "USE 'FILE' TO LIST CURRENT CONTENTS OF YOUR FILE." 2440 GOTO 9998 9929 CHAIN "$IDA29",210 9996 PRINT "'SAVF' NOT EXECUTED." 9998 CHAIN "$IDA",150 9999 END