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:12FEB74
60  REM:Q1=1 FOR >ABSO;=2 FOR>ADDC;=3 FOR>ADDV;=4 FOR >DIFF;=5 FOR>DOTP
62  REM:Q1=6 FOR>EXPO;=7 FOR>LAGG;=8 FOR >LOGE;=9 FOR>LOG1;=10 FOR>MULC
64  REM:Q1=11 FOR>MULV;=12 FOR>POWE;=13 FOR>STAN;=14 FOR >DIVI
66  REM:Q1=15 FOR>SAVR
150  DIM D$[13]
155  GOTO 200
160  IF Q9>1 THEN 200
170  PRINT "WANT EXPLANATION ";
172  INPUT D$
174  IF D$[1,1]="N" THEN 200
176  PRINT "WILL GIVE EXPLANATION IN IDA24E FOR TRANS. AND SAVR"
200  IF Q[1]#0 THEN 220
210  GOTO 9929
220  PRINT 
230  IF K<K9-1 THEN 302
240  PRINT "DATA MATRIX ALREADY FULL ("K9-1"COL(S).)"
250  PRINT "WANT TO CONTINUE ";
260  INPUT D$
270  IF D$[1,1]="N" THEN 9996
302  IF Q1=4 OR Q1=7 THEN 5000
305  IF Q1=15 THEN 1800
310  GOTO Q9 OF 320,350,355
320  PRINT "* IN WHICH COLUMN WILL THE TRANSFORMED"
330  PRINT "VARIABLE BE PLACED?  GIVE NUMBER : ";
340  GOTO 360
350  PRINT "* COL. # TO PLACE TRANSF. VAR. : ";
352  GOTO 360
355  PRINT "* COL# TO PLACE VAR. : ";
360  ENTER 30,Q8,J
370  PRINT 
380  IF Q8>0 THEN 445
385  IF K=(K9-1) THEN 420
390  PRINT "TO PLACE VARIABLE IN A NEW COLUMN, TYPE THE NUMBER :"(K+1)
410  PRINT 
415  PRINT "OTHERWISE,"
420  PRINT "GIVE A NUMBER BETWEEN 1 AND"K" : ";
440  GOTO 360
445  IF J#INT(J) OR J <= 0 THEN 9996
447  IF Q[2]#0 AND J<K+1 THEN 9000
450  IF J <= (K+1) AND J<K9 THEN 500
460  PRINT "NUMBER GIVEN TOO LARGE"
470  GOTO 390
500  GOTO Q1 OF 510,510,1500,510,1504,510,510,510,510,510
502  GOTO (Q1-10) OF 1504,510,510,1506,800
510  PRINT "* COLUMN TO BE TRANSFORMED :";
520  ENTER 30,Q8,I
530  PRINT 
540  IF Q8>0 THEN 575
550  PRINT "DATA IN COL(S).1 TO"K
570  GOTO 510
575  IF I#INT(I) OR I <= 0 THEN 9996
580  IF I <= K THEN 602
590  PRINT "NUMBER GIVEN TOO LARGE"'10;
600  GOTO 550
602  IF I#J THEN 610
604  IF (Q1=4) OR (Q1=7) THEN 3500
610  GOTO Q1 OF 800,700,50,2000,50,800,2000,800,800,700,50,620,3000
620  GOTO Q9 OF 630,650,670
630  PRINT "* VALUE OF POWER = ";
640  GOTO 675
650  PRINT "* POWER = ";
660  GOTO 675
670  PRINT "* P = ";
675  ENTER 30,Q8,P0
676  PRINT 
680  IF Q8>0 THEN 800
685  PRINT "NUMERIC INPUT REQUIRED"
686  PRINT "  2  FOR SQUARE,"
687  PRINT " 0.5 FOR SQUARE ROOT,"
688  PRINT " -1  FOR RECIPROCAL, ETC."
690  GOTO 630
700  GOTO Q9 OF 710,730,750
710  PRINT "* VALUE OF CONSTANT = ";
720  GOTO 760
730  PRINT "* CONSTANT = ";
740  GOTO 760
750  PRINT "* C = ";
760  ENTER 30,Q8,P0
765  PRINT 
770  IF Q8>0 THEN 800
780  PRINT "NUMERIC INPUT REQUIRED"
790  GOTO 710
800  FOR I1=1 TO X[N9+3,I]
802  X[I1,J]=0
804  NEXT I1
806  FOR I1=X[N9+3,I]+1 TO N
808  IF Q1=15 THEN 1090
810  GOTO Q1 OF 820,840,50,50,50,860,1070,880,950,1000,50,1020
820  X[I1,J]=ABS(X[I1,I])
830  GOTO 1100
840  X[I1,J]=X[I1,I]+P0
850  GOTO 1100
860  X[I1,J]=EXP(X[I1,I])
870  GOTO 1100
880  IF (X[I1,I])>0 THEN 910
890  IF X[I1,K9+2]=0 THEN 1100
900  GOTO 1040
910  X[I1,J]=LOG(X[I1,I])
920  GOTO 1100
950  IF X[I1,I]>0 THEN 970
960  GOTO 890
970  X[I1,J]=LOG(X[I1,I])/LOG(10)
980  GOTO 1100
1000  X[I1,J]=X[I1,I]*P0
1010  GOTO 1100
1020  IF X[I1,I] >= 0 THEN 1060
1025  IF X[I1,K9+2]=0 THEN 1100
1030  IF (P0/2)=INT(P0/2) THEN 1060
1040  PRINT "NONPOSITIVE VALUE IN ACTIVE DATA TO BE TRANSFORMED."
1045  PRINT "REQUESTED TRANSFORMATION IMPOSSIBLE."
1050  GOTO 9998
1060  X[I1,J]=X[I1,I]^P0
1065  GOTO 1100
1070  IF I1>I2 THEN 1080
1075  X[I1,J]=0
1076  GOTO 1100
1080  X[I1,J]=X[I1-I2,I]
1085  GOTO 1100
1090  X[I1,J]=X[I1,I]
1100  NEXT I1
1110  X[N9+3,J]=X[N9+3,I]
1120  IF Q1#7 THEN 1140
1130  X[N9+3,J]=X[N9+3,I]+I2
1135  REM: GOTO IDA912 FOR UPDATING MEAN AND STD.DEV.
1140  I4=J
1150  Q[8]=Q[6]=24
1178  GOTO 9912
1500  D$="+"
1501  GOTO 1508
1504  D$="X"
1505  GOTO 1508
1506  D$="/"
1508  GOTO Q9 OF 1510,1510,1560
1510  PRINT  USING 1520;J,D$
1520  IMAGE "COLUMN",XDD," = (COLUMN I) ",A," (COLUMN J)"
1530  PRINT "GIVE VALUES I,J, SEPARATED BY A COMMA : ";
1550  GOTO 1570
1560  IF Q1=14 THEN 1565
1562  PRINT "I,J = ";
1564  GOTO 1570
1565  PRINT "NUMERATOR, DENOMINATOR = ";
1570  INPUT J1,J2
1580  IF (J1 MAX J2) <= K THEN 1620
1590  PRINT "COLUMN NUMBERS MUST BE <",(K+1)
1600  PRINT "PLEASE RE-ENTER I,J : ";
1610  GOTO 1570
1620  J3=(X[N9+3,J1] MAX X[N9+3,J2])
1621  FOR I=1 TO J3
1622  X[I,J]=0
1624  NEXT I
1625  FOR I=J3+1 TO N
1640  GOTO (Q1-2) OF 1650,50,1670,50,50,50,50,50,1670,50,50,1675
1650  X[I,J]=X[I,J1]+X[I,J2]
1660  GOTO 1680
1670  X[I,J]=X[I,J1]*X[I,J2]
1672  GOTO 1680
1675  X[I,J]=X[I,J1]/X[I,J2]
1680  NEXT I
1690  X[N9+3,J]=J3
1700  GOTO 1140
1800  REM:>SAVR
1820  IF Q[2]#0 THEN 1826
1822  PRINT "NO RESIDUALS OR FITTED VALUES TO SAVE."
1823  PRINT "EXECUTE 'REGR' FIRST."
1824  GOTO 9998
1826  IF Q[4]=0 THEN 1840
1828  Q[5]=0
1830  Q[6]=24
1832  Q[7]=1840
1834  GOTO 9938
1840  PRINT 
1842  GOTO Q9 OF 1844,1850,1850
1844  PRINT "WANT TO ";
1846  PRINT "SAVE RESIDUALS, FITTED VALUES, OR NEITHER ? ";
1848  GOTO 1860
1850  PRINT "* R, F, OR N ? ";
1860  ENTER 30,Q8,D$
1861  PRINT 
1862  IF Q8>0 THEN 1870
1864  PRINT "CAN SAVE RESIDUALS, FITTED, OR NEITHER."
1865  PRINT "PLEASE ANSWER. R, F, OR N ";
1866  INPUT D$
1870  IF D$[1,1]="R" THEN 1880
1872  IF D$[1,1]="F" THEN 1890
1874  IF D$[1,1]="N" THEN 9996
1875  IF D$[1,1]="?" THEN 1864
1876  PRINT "INVALID RESPONSE."
1878  GOTO 1864
1880  D$="RESIDUALS"
1881  I=K9+1
1882  GOTO 1900
1890  D$="FITTED VALUES"
1892  I=K9
1900  PRINT "*COL. # TO PLACE "D$" =";
1910  GOTO 360
2000  GOTO Q9 OF 2001,2001,2003
2001  PRINT "GIVE A POSITIVE INTEGER FOR GAP :"
2002  GOTO 2004
2003  PRINT "GAP = ";
2004  INPUT I2
2005  IF Q1=7 THEN 800
2006  J1=X[N9+3,I]+I2
2008  FOR I1=1 TO J1
2010  X[I1,J]=0
2020  NEXT I1
2070  J2=N
2130  FOR I1=J1+1 TO J2
2140  X[I1,J]=X[I1,I]-X[I1-I2,I]
2150  NEXT I1
2160  X[N9+3,J]=X[N9+3,I]+I2
2165  IF Q[2]=0 THEN 2170
2167  Q[4]=1
2170  GOTO 1140
3000  FOR I1=Q4 TO N
3005  IF X[I1,K9+2]=0 THEN 3020
3010  X[I1,J]=(X[I1,I]-X[N9+1,I])/X[N9+2,I]
3020  NEXT I1
3030  X[N9+1,J]=0
3040  X[N9+2,J]=1
3050  X[N9+3,J]=X[N9+3,I]
3060  GOTO 1140
3500  PRINT "FOR THIS TRANSFORMATION, THE TRANSFORMED VARIABLE CANNOT"
3510  PRINT "OCCUPY THE SAME COLUMN AS THE VARIABLE TO BE TRANSFORMED."
3515  IF K=K9-1 THEN 320
3520  PRINT  USING 3530;(K+1)
3530  IMAGE #,"WANT TO PUT NEW VARIABLE IN COLUMN ",DDX
3540  INPUT D$
3550  IF D$[1,1]="N" THEN 320
3560  J=K+1
3570  GOTO 610
5000  REM:PRETEST FOR DIFF AND LAGG
5010  FOR I=1 TO N
5020  IF X[I,K9+2]=0 THEN 5050
5030  NEXT I
5040  GOTO 310
5050  PRINT "SOME OBSERVATIONS HAVE PREVIOUSLY BEEN DELETED."
5060  PRINT "TO EXECUTE 'LAGG' OR 'DIFF' NOW WOULD LEAD TO"
5070  PRINT "IMPROPER UPDATING BY THE SYSTEM."
5080  PRINT 
5090  PRINT "TO ACCOMPLISH THE DESIRED TRANSFORMATION, YOU SHOULD"
5100  PRINT "FIRST 'RECOUP' THE DELETED OBSERVATIONS,"
5102  PRINT "THEN 'LAGG' OR 'DIFF',"
5110  PRINT "AND FINALLY DELETE THE APPROPRIATE OBSERVATIONS AT THE"
5120  PRINT "COMPLETION OF SUCH TRANSFORMATIONS."
5130  GOTO 9996
9000  FOR I1=1 TO K8+1
9010  IF J=V[I1] THEN 9050
9020  NEXT I1
9030  REM: J NOT A REGRESSION VAR.
9040  GOTO 450
9050  PRINT "COL."J"CONTAINS 1 OF THE REGRESSION VARIABLES."
9060  PRINT "WANT TO CHOOSE ANOTHER COLUMN ";
9070  INPUT D$
9080  IF D$[1,1]="N" THEN 450
9090  GOTO 385
9912  CHAIN "$IDA912"
9929  CHAIN "$IDA29",210
9938  CHAIN "$IDA38"
9996  PRINT "REQUESTED COMMAND NOT EXECUTED."
9998  CHAIN "$IDA",150
9999  END 
