SUB TRANSF(NR,NC) DIM #3,B(250,15) \ DIM T(250) H9=.9E-38 \ NC1=NC \ IS1=0 \ & MAXR=250 \ & MAXC=15\ A=1. \ & PRINT "THERE ARE";NR;" ROWS AND";NC;" COLUMNS IN YOUR DATA"; & " MATRIX" \ PRINT \ & PRINT "TYPE 'HELP' FOR A LIST OF TRANSFORMATION CODES" \ & PRINT \ GOTO <> ! PRINT THAT TRANSFORMATION HAS BEEN DONE <<*PTD>> PRINT \ PRINT "TRANSFORMATION";JC;" HAS BEEN COMPLETED" \ & PRINT \ & NC=NC1 <<*STT>> ON ERROR GOTO <> \ & INPUT "TYPE TRANSFORMATION CODE";C$ \ PRINT IF C$<>"HELP" GOTO <> ! HELP FILE PRINT \ PRINT "DEFINITIONS OF TRANSFORMATION CODES" \ & PRINT "(X AND Y ARE VARIABLES, C IS A CONSTANT)" \ PRINT \ & PRINT " 1 SQUARE ROOT OF X"\ & PRINT " 2 COMMON LOG OF X" \ & PRINT " 3 NATURAL LOG OF X"\ & PRINT " 4 EXPONENTIAL OF X"\ & PRINT " 5 X + Y" \ & PRINT " 6 X - Y" \ & PRINT " 7 X * Y" \ & PRINT " 8 X / Y" \ & PRINT " 9 X + C" \ & PRINT "10 X * C" \ & PRINT "11 1 / X" \ & PRINT "12 ARCSIN OF X" \ & PRINT "13 X**C" \ & PRINT "14 IF X>=C, THEN X=1; OTHERWISE X=0" \ & PRINT "15 DELETE A COLUMN" \ & PRINT "16 SCALAR PRODUCT" \ & PRINT "17 PRINT ENTIRE MATRIX" \ & PRINT "18 PRINT A SUBMATRIX" \ & PRINT "19 GENERATE RANDOM NUMBERS" \ & PRINT " 0 NO MORE TRANSFORMATIONS" \ PRINT GOTO <> <<*SRT>> JC=VAL(C$) IF JC>=0 AND JC<=19 GOTO <> <<*PRI>> PRINT "INVALID TRANSFORMATION CODE" \ & GOTO <> <<*ERC>> RESUME <> <<*COK>> IF JC=0 GOTO <> ON ERROR GOTO <> ON JC GOTO <>,<>,<>,<>,<>,<>,<>,<>, & <>,<>,<>,<>,<>,<>,<>,<

>,<>,<>, & <> ! SUB TO TYPE VARIABLE (COLUMN) NUMBERS AND CONSTANTS <<*XAA>> PRINT "ENTER VARIABLE X AND THE VARIABLE NUMBER TO BE ASSIGNED" \ & PRINT " TO THE TRANSFORMED DATA"\ & INPUT "(FORM: XX,XX)";IX;IA \ PRINT \ GO TO <> <<*XYA>> PRINT "ENTER VARIABLES X AND Y AND THE VARIABLE NUMBER TO BE" \ & PRINT " ASSIGNED TO THE TRANSFORMED DATA" \ & INPUT "(FORM: XX,XX,XX)";IX;IY;IA \ PRINT \ GO TO <> <<*ZCA>> PRINT "ENTER VARIABLE X, CONSTANT C AND THE VARIABLE NUMBER" \ & PRINT " TO BE ASSIGNED TO THE TRANSFORMED DATA" \ & INPUT "(FORM; XX,XX.X,XX)";IX;C;IA \ PRINT <<*XON>> IY=1 <<*XO1>> IF IY<1 OR IY>NC1 GOTO <> IF IX<1 OR IX>NC1 GOTO <> IF IA<1 OR IA>NC1+1 OR IA>MAXC GOTO <> IF IA>NC THEN NC1=IA T(0)=0. \ & ON ERROR GOTO <> \ & RETURN ! ERROR ROUTINE FOR INVALID USER KEYBOARD RESONSES <<*ERT>> PRINT "YOU TYPED NON-NUMERIC VARIABLES OR CONSTANTS" \ & PRINT \ & IS1=1 \ & GOTO <> <<*ERU>> PRINT "YOU HAVE GIVEN AN INVALID RESPONSE" \ PRINT <<*ERV>> PRINT "YOUR INPUT VARIABLE NUMBERS MUST BE BETWEEN 1 AND";NC1 NC2=NC1+1 \ IF NC2>MAXC THEN NC2=MAXC PRINT "YOUR OUTPUT VARIABLE NUMBER MUST BE BETWEEN 1 AND";NC2 <<*ERW>> INPUT "DO YOU WISH TO CONTINUE THIS TRANSFORMATION (Y/N)";W$ W$=LEFT(W$,1) IF IS1=1 GOTO <> IF W$="N" GOTO <> IF W$="Y" GOTO <> <<*ER9>> PRINT "YOU MUST TYPE Y OR N. PLEASE TRY AGAIN." \ GOTO <> <<*ERX>> IF JC=15 GOTO <> IF JC=16 GO TO <

> IF JC=19 GO TO <> ON JC GOTO <>,<>,<>,<>,<>,<>,<>, & <>,<>,<>,<>,<>,<>,<> <<*ERY>> IF W$="N" THEN IS1=0 \ RESUME <> IF W$<>"Y" GOTO <> IS1=0 IF JC=15 THEN RESUME <> IF JC=16 THEN RESUME <

> IF JC=19 THEN RESUME <> ON JC GOTO <>,<>,<>,<>,<>,<>,<>,<>, & <>,<>,<>,<>,<>,<> <<*AA>> RESUME <> <<*AB>> RESUME <> <<*AC>> RESUME <> ! SQUARE ROOT TRANSFORMATION <<*A>> GOSUB <> FOR I=1 TO NR IF B(I,IX)=H9 THEN T(I)=H9 ELSE T(0)=T(0)+1. \ & T(I)=SQR(B(I,IX)) NEXT I B(I,IA)=T(I) FOR I=0 TO NR GOTO <> ! COMMON LOG TRANSFORMATION <<*B>> GOSUB <> FOR I=1 TO NR IF B(I,IX)=H9 THEN T(I)=H9 ELSE T(0)=T(0)+1. \ & T(I)=LOG10(B(I,IX)) NEXT I B(I,IA)=T(I) FOR I=0 TO NR GOTO <> ! NATURAL LOG TRANSFORMATION <<*C>> GOSUB <> FOR I=1 TO NR IF B(I,IX)=H9 THEN T(I)=H9 ELSE T(0)=T(0)+1. \ & T(I)=LOG(B(I,IX)) NEXT I B(I,IA)=T(I) FOR I=0 TO NR GOTO <> ! EXPONENTIAL TRANSFORMATION <<*D>> GOSUB <> FOR I=1 TO NR IF B(I,IX)=H9 THEN T(I)=H9 ELSE T(0)=T(0)+1.\ & T(I)=EXP(B(I,IX)) NEXT I B(I,IA)=T(I) FOR I=0 TO NR GOTO <> ! X + Y TRANSFORMATION <<*E>> GOSUB <> FOR I=1 TO NR IF B(I,IX)=H9 OR B(I,IY)=H9 THEN T(I)=H9 ELSE & T(I)=B(I,IX)+B(I,IY) \ T(0)=T(0)+1. NEXT I IF T(0)=0. GOTO <> B(I,IA)=T(I) FOR I=0 TO NR GOTO <> ! X - Y TRANSFORMATION <<*F>> GOSUB <> FOR I=1 TO NR IF B(I,IX)=H9 OR B(I,IY)=H9 THEN T(I)=H9 ELSE & T(I)=B(I,IX)-B(I,IY) \ T(0)=T(0)+1. NEXT I IF T(0)=0. GOTO <> B(I,IA)=T(I) FOR I=0 TO NR GOTO <> ! X * Y TRANSFORMATION <<*G>> GOSUB <> FOR I=1 TO NR IF B(I,IX)=H9 OR B(I,IY)=H9 THEN T(I)=H9 ELSE & T(I)=B(I,IX)*B(I,IY) \ T(0)=T(0)+1. NEXT I IF T(0)=0. GOTO <> B(I,IA)=T(I) FOR I=0 TO NR GOTO <> ! X / Y TRANSFORMATION <<*H>> GOSUB <> FOR I=1 TO NR IF B(I,IX)=H9 OR B(I,IY)=H9 THEN T(I)=H9 ELSE & T(I)=B(I,IX)/B(I,IY) \ T(0)=T(0)+1. NEXT I IF T(0)=0. GOTO <> B(I,IA)=T(I) FOR I=0 TO NR GOTO <> ! ERROR ROUTINE FOR TRANFORMATIONS USING TWO VARIABLES ! AND NO DATA EXISTS FOR ANY PAIR <<*ER0>> PRINT "NO PAIRS OF DATA EXIST TO PERFORM THIS TRANSFORMATION" <<*ERL>> IF IA>=NC THEN NC1=NC GOTO <> ! X + C TRANSFORMATION <<*I>> GOSUB <> FOR I=1 TO NR IF B(I,IX)=H9 THEN T(I)=H9 ELSE T(0)=T(0)+1. \ & T(I)=B(I,IX)+C NEXT I B(I,IA)=T(I) FOR I=0 TO NR GOTO <> ! X * C TRANSFORMATION <<*J>> GOSUB <> FOR I=1 TO NR IF B(I,IX)=H9 THEN T(I)=H9 ELSE T(0)=T(0)+1. \ & T(I)=B(I,IX)*C NEXT I B(I,IA)=T(I) FOR I=0 TO NR GOTO <> ! 1 / X TRANSFORMATION <<*K>> GOSUB <> FOR I=1 TO NR IF B(I,IX)=H9 THEN T(I)=H9 ELSE T(0)=T(0)+1. \ & T(I)=A/B(I,IX) NEXT I B(I,IA)=T(I) FOR I=0 TO NR GOTO <> ! ARCSIN(X) TRANSFORMATION <<*L>> GOSUB <> FOR I=1 TO NR IF B(I,IX)=H9 THEN T(I)=H9 \ GOTO <> IF B(I,IX)>-1. AND B(I,IX)<1. GOTO <> IF B(I,IX)=1. THEN T(I)=1.570796 \ GOTO <> IF B(I,IX)=-1. THEN T(I)=-1.570796 \ GOTO <> PRINT "ARCSINE TRANSFORMATION WAS NOT DONE" PRINT "SOME VALUES LIE OUTSIDE RANGE OF -1. TO 1." GO TO <> <<*L1>> T(I)=ATN(B(I,IX)/SQR(1.-B(I,IX)**2)) <<*L2>> T(0)=T(0)+1. <<*L3>> NEXT I B(I,IA)=T(I) FOR I=0 TO NR GOTO <> ! X**C TRANSFORMATION <<*M>> GOSUB <> FOR I=1 TO NR IF B(I,IX)=H9 THEN T(I)=H9 ELSE T(0)=T(0)+1. \ & T(I)=B(I,IX)**C NEXT I B(I,IA)=T(I) FOR I=0 TO NR GO TO <> ! TRANSFORMATION: IF X>=C, A=1, ELSE A=O <<*N>> GOSUB <> B(0,IA)=0. FOR I=1 TO NR IF B(I,IX)=H9 THEN B(I,IA)=H9 ELSE B(0,IA)=B(0,IA)+1. \ & IF B(I,IX)>=C THEN B(I,IA)=1. ELSE B(I,IA)=0. NEXT I GOTO <> ! DELETE A COLUMN <<*O>> IF NC1>1 GO TO <> PRINT "YOU CANNOT DELETE A COLUMN. . ." \ & PRINT "YOU HAVE ONLY ONE COLUMN LEFT" \ & GOTO <> <<*O1>> INPUT "WHAT COLUMN IS TO BE DELETED";ND IF ND>=1 AND ND<=NC1 GOTO <> PRINT "THE COLUMN NUMBER MUST BE BETWEEN 1 AND";NC1 \ & PRINT "PLEASE TRY AGAIN" \ & GOTO <> <<*O2>> NC1=NC1-1 IF ND=NC GOTO <> FOR K=0 TO NR B(K,J)=B(K,J+1) FOR J=ND TO NC1 NEXT K GOTO <> ! SCALAR PRODUCT OF TWO COLUMNS (VARIABLES) <<*P>> INPUT "ENTER VARIABLES X AND Y (FORM: XX,XX)";IX;IY IF IX<1 OR IX>NC1 GOTO <> IF IY<1 OR IY>NC1 GOTO <> SUM=0 IZ=0 FOR I=1 TO NR IF B(I,IX)<>H9 AND B(I,IY)<>H9 THEN IZ=IZ+1 \ & SUM=SUM+B(I,IX)*B(I,IY) NEXT I IF IZ=0 THEN PRINT "SCALAR PRODUCT HAS NO VALUES TO SUM" \ & GOTO <> IF SUM=0 THEN PRINT "SCALAR PRODUCT IS 0." \ GOTO <> PRINT USING "SCALAR PRODUCT = #.######^^^^ ",SUM; PRINT USING "RECIPROCAL = #.######^^^^",1./SUM <<*P1>> PRINT \ & GOTO <> ! PRINT ENTIRE MATRIX <<*Q>> NC3,NC8,NR1=1 \ NC2,NC9=NC1 \ NR2=NR GOTO <> ! PRINT SUBMATRIX <<*R>> IS=1 ON ERROR GOTO <> <<*R1>> INPUT "TYPE FIRST ROW, LAST ROW TO PRINT";NR1,NR2 IF NR1>=1 AND NR1<=NR AND NR2>=NR1 AND NR2<=NR GOTO <> PRINT "ROW NUMBERS MUST BE BETWEEN 1 AND";NR \ & PRINT "PLEASE TRY AGAIN " \ & GO TO <> <<*R2>> IS=2 INPUT "TYPE FIRST COLUMN, LAST COLUMN TO PRINT";NC3,NC2 IF NC3>=1 AND NC3<=NC1 AND NC2>=NC3 AND NC2<=NC1 GOTO <> PRINT "COLUMN NUMBERS MUST BE BETWEEN 1 AND";NC1 \ & PRINT "PLEASE TRY AGAIN" \ & GOTO <> <<*R3>> NC8=NC3 \ & NC9=NC2 <<*R4>> IF (NC9-NC8)>5 THEN NC9=NC8+5 PRINT \ PRINT "ROW";TAB(35);"COLUMN" \ PRINT I=10 FOR K=NC8 TO NC9 PRINT TAB(I);K; I=I+11 NEXT K PRINT FOR I=NR1 TO NR2 PRINT USING "### ",I; FOR J=NC8 TO NC9 IF B(I,J)=H9 THEN PRINT SPACE$(11); ELSE & PRINT USING " #####.####",B(I,J); NEXT J PRINT NEXT I PRINT \ PRINT IF NC9> GOTO <> <<*RE>> PRINT "YOU TYPED NON-NUMERIC ROW OR COLUMN NUMBERS" \ & PRINT "PLEASE RETYPE NUMBERS SEPARATED BY A COMMA" IF IS=1 THEN RESUME <> ELSE RESUME <> ! GENERATE A COLUMN OF RANDOM NUMBERS <<*S>> PRINT "ENTER VARIABLE NUMBER TO BE ASSIGNED TO THE RANDOM NUMBERS" INPUT "(FORM XX)";IA PRINT IF IA<1 OR IA>MAXC OR IA>NC1+1 GOTO <> IF IA>NC1 THEN NC1=IA INPUT "ENTER LOWER LIMIT, UPPER LIMIT";XL,XU \ PRINT RANDOMIZE B(I,IA)=(XU-XL)*RND+XL FOR I=1 TO NR B(0,IA)=NR GOTO <> ! ERROR SUB FOR IMPOSSIBLE TRANSFORMATIONS <<*ERS>> PRINT \ PRINT "TRANSFORMATION";JC;" WAS NOT DONE" IF ERR=54 THEN PRINT "COLUMN";IX;" CONTAINS NEGATIVE VALUES" \ & GOTO <> IF ERR=53 THEN PRINT "COLUMN";IX;" CONTAINS VALUES <= 0" \ & GOTO <> IF ERR=61 THEN PRINT "DIVISION BY ZERO CANNOT BE DONE" \ GOTO <> IF ERR=48 OR ERR=49 THEN PRINT "RESULTS ARE OUTSIDE THE"; & " NUMBER RANGE OF THIS COMPUTER" <<*SUE>> RESUME <> ! END OF TRANSFORMATIONS <<*ENZ>> PRINT "YOU NOW HAVE";NC;" VARIABLES IN YOUR DATA MATRIX" SUBEND