1 SUB EDIT00 & ! 500.14 - STAT11 - EDIT00 & ! & ! EDIT MODULE & ! & ! RELEASED FOR SUBMISSION TO THE DECUS LIBRARY BY THE DEC & ! ENGINEERING SYSTEMS GROUP AND THE EDUCATION PRODUCTS GROUP & ! SEPTEMBER, 1977 & ! & 2 ! COPYRIGHT (C) 1973, DIGITAL EQUIPMENT CORPORATION, & ! & ! MAYNARD, MASSACHUSETTS & 3 ! THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE & ! ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION OF & ! DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT AS & ! MAY OTHERWISE BE PROVIDED IN WRITING BY DEC. & 4 ! THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT & ! NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL & ! EQUIPMENT CORPORATION. & 5 ! DEC ASSUMES NO RESPONSIBILITY FOR USE OR RELIABILITY OF ITS & ! SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. & ! & ! & 6 ! THIS MODULE ADDS, DELETES, CHANGES, SAVES, AND PRINTS DATA IN THE & ! VIRTUAL DATA MATRIX. & ! & ! & 7 ! AUTHOR: MICHAEL D. KNAUER & ! & ! VERSION NUMBER: 001 & ! & ! DATE: OCTOBER, 1973 & ! & ! & 8 ! MODIFICATIONS: MAY, 1975 & ! & ! MODIFIED TO ACCEPT MISSING DATA POINTS & ! & ! BY ARDOTH HASSLER WILSON & ! CENTRAL STATE UNIVERSITY & ! EDMOND, OKLAHOMA & ! & 00009! MODIFICATIONS: JUNE, 1976 & ! & ! CTRL/C TRAP ADDED & 10 ! & ! CALLING ARGUMENTS & ! & ! 1) VARIABLE NAME: F9$ & ! RANGE OF VALUES: S00000.RWM - S99999.RWM & ! USE: NAME OF 250 ROW BY 15 COLUMN & ! VIRTUAL DATA MATRIX. & 11 ! 2) VARIABLE NAME: F2$ & ! RANGE OF VALUES: ANY VALID BASIC-PLUS FILE NAME & ! USE: NAME FOR OUTPUT FILE TO SAVE DATA & 12 ! 3) VARIABLE NAME: C% & ! RANGE OF VALUES: 1 - 15 & ! USE: NUMBER OF COLUMNS IN DATA MATRIX & 13 ! 4) VARIABLE NAME: R% & ! RANGE OF VALUES: 1 - 250 & ! USE: NUMBER OF ROWS IN DATA MATRIX & 15 ! & ! RETURNING ARGUMENTS & ! & ! THE LIST OF RETURNING ARGUMENTS IS THE SAME AS THE LIST OF & ! CALLING ARGUMENTS. & ! & ! 20 ! & ! DESCRIPTION OF FUNCTION & ! & ! IN THIS MODULE, THE USER DIRECTS THE ADDING, DELETING, & ! CHANGING, SAVING, AND PRINTING OF DATA IN THE VIRTUAL DATA & ! MATRIX. & 21 ! THE USER DIRECTS WORK BY TYPING IN OPTION NUMBERS. CONTROL IS & ! THEN TRANSFERRED TO VARIOUS ROUTINES, WHERE THE USER MUST & ! USUALLY ENTER MORE INFORMATION SUCH AS ROW OR COLUMN NUMBERS & ! OR NEW DATA. & 22 ! IF ANYTHING IN THE DATA MATRIX IS CHANGED (WHICH IS USUALLY & ! THE CASE) WHILE EDIT00 IS EXECUTING, THEN WHEN EDITING & ! IS FINISHED CONTROL IS TRANSFERRED TO ESCRWM FOR RECOMPUTATION & ! OF THE ELEMENTARY STATISTICS. & 23 ! IF NOTHING IN THE DATA MATRIX IS CHANGED BY EDIT00, THEN & ! CONTROL IS PASSED DIRECTLY TO THE NEXT ANALYSIS TO BE PERFORMED & ! (OR BACK TO STATCM) WHEN EDITING IS FINISHED. & 25 ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & 30 ! & ! Modifications: August,1981 & ! & ! COMMON (STAT) MODULE$ = 6%, LINE%, SAV.F$ = 127% & ! added to replace core common and also to let STTMGR know & ! who to chain to (MODULE$). Once in MODULE$, LINE% indicates & ! line to begin execution. & ! & \ COMMON (STAT) MODULE$ = 6%, LINE%, SAV.F$ = 127% & 39 ! & ! & ! NORMAL ENTRY TO THIS MODULE BEGINS BY SETTING THE SWITCH X% TO 0. & ! IF CHANGES ARE MADE TO THE DATA MATRIX, X% IS SET TO 1, WHICH CAUSES & ! CONTROL TO GO TO ESCRWM WHEN EDITING IS FINISHED. & ! & 40 GOTO 45 IF LINE% = 45% & \ X%=0% & \ GOTO 50 44 ! & ! & ! & ! EDIT00 IS ENTERED HERE FROM THE ESCRWM ERROR ROUTINE. X% IS SET & ! TO 1 TO FORCE A RETURN TO ESCRWM TO SEE IF THE USER DELETED OR & ! CHANGED THE DATA IN ERROR. & ! & ! & 45 X%=1% 49 ! & ! & ! & ! HERE THE CALLING ARGUMENTS ARE RETRIEVED AND THE DATA FILE OPENED. & ! & ! & 50 ON ERROR GOTO 900 & \ GOSUB 10000 & \ !F$=SYS(CHR$(7%)) & \ F$ = SAV.F$ & \ R%=VAL(MID(F$,46%,5%)) & \ C%=VAL(MID(F$,51%,5%)) & \ F9$=MID(F$,31%,15%) 55 A9$=MID(F$,62%,9%) & \ A9$=LEFT(A9$,INSTR(5%,A9$,"]")) & \ H9=.9E-38 60 DIM B(15%) 70 OPEN F9$ AS FILE 1, VIRTUAL 80 DIM #1,A(250%,15%) 94 ! & ! & ! & ! HERE THE USER IS ASKED TO ENTER AN EDIT CODE. IF HE TYPES HELP, A & ! LIST OF THE EDIT OPTIONS IS PRINTED. & ! & ! & 95 PRINT 97 PRINT "TYPE HELP FOR A LIST OF EDIT CODES" 100 INPUT "TYPE EDIT CODE. (0 FOR NO MORE EDIT)";C9$ 105 PRINT 110 IF C9$="HELP" GOTO 1000 115 ON ERROR GOTO 125 120 C9%=VAL(C9$) 121 IF C9%>=0 AND C9%<=9% THEN GOTO 128 122 PRINT "EDIT CODE MUST BE BETWEEN 0 AND 9" 123 PRINT "PLEASE TRY AGAIN" 124 GOTO 97 125 IF ERR=28% THEN GOSUB 10000 & \ X%=1% & !\ RESUME 95 & \ MODULE$ = "FINISH" & \ GOTO 32750 126 PRINT "INVALID EDIT CODE. PLEASE TRY AGAIN" & \ RESUME 95 127 ! & ! & ! & ! FROM HERE, CONTROL IS PASSED TO THE APPROPRIATE EDIT OPTION ROUTINE. & ! & ! & 128 ON ERROR GOTO 975 130 IF C9%=0% GOTO 2000 140 ON C9% GOTO 150,200,250,300,350,400,600,810,850 149 ! & ! & ! & ! THIS ROUTINE CHANGES A SINGLE VALUE IN THE DATA MATRIX. NOTE THAT & ! THE X% SWITCH IS SET TO 1. & ! & ! & 150 INPUT "TYPE ROW AND COLUMN ";R1%,C1% 152 IF R1%>=1% AND R1%<=R% AND C1%>=1% AND C1%<=C% & THEN GOTO 160 154 PRINT "THE ROW NUMBER MUST BE BETWEEN 1 AND"; R% 156 PRINT "THE COLUMN NUMBER MUST BE BETWEEN 1 AND"; C% 157 PRINT "PLEASE TRY AGAIN" 158 GOTO 150 160 INPUT "NEW VALUE";L$ & \ IF L$=" " OR L$="X" & THEN IF A(R1%,C1%)=H9 & THEN GOTO 170 & ELSE A(R1%,C1%)=H9 & \ A(0%,C1%)=A(0%,C1%)-1 & \ GOTO 165 162 A(R1%,C1%)=VAL(L$) 163 A(0%,C1%)=A(0%,C1%)+1 165 X%=1% 167 PRINT 170 GOTO 100 199 ! & ! & ! & ! THIS ROUTINE ASKS THE USER WHAT ROW HE WANTS TO REPLACE. & ! & ! & 200 INPUT "WHICH ROW DO YOU WANT TO REPLACE ";N1% 202 IF N1%>=1% AND N1%<=R% GOTO 260 204 PRINT "THE ROW NUMBER MUST BE BETWEEN 1 AND"; R% 206 PRINT "PLEASE TRY AGAIN" 208 GOTO 200 249 ! & ! & ! & ! THIS ROUTINE TELLS THE USER THE NUMBER OF THE NEW ROW IN THE DATA & ! MATRIX ("ADD A ROW" OPTION). & ! & ! & 250 PRINT "NUMBER OF NEW ROW IS ";R%+1% 251 IF R%+1%>=251% THEN PRINT "YOU CANNOT ADD A ROW" & \ PRINT "YOUR DATA MATRIX ALREADY CONTAINS" & \ PRINT "THE MAXIMUM 250 ROWS OF DATA" & \ GOTO 100 256 R%=R%+1% & \ N1%=R% 259 ! & ! & ! & ! THIS ROUTINE IS USED BY BOTH OF THE ABOVE ROW ROUTINES. THE USER ENTERS & ! NEW VALUES FROM THE KEYBOARD TO REPLACE OR ADD A ROW TO THE MATRIX. & ! & ! & 260 PRINT "TYPE";C%;" NUMBERS, ANY AMOUNT PER LINE" & \ PRINT "SEPARATE NUMBERS WITH A COMMA BUT DO NOT END A LINE WITH A COMMA" 261 PRINT "IF A VALUE IS MISSING, TYPE AN 'X' WHERE THE VALUE"; & " WOULD NORMALLY OCCUR" 262 INPUT LINE L$ & \ L$=LEFT(L$,LEN(L$)-2)+"," 264 FOR K%=1% TO C% 265 Z%=INSTR(1%,L$,",") & \ IF Z%=0% GOTO 275 266 IF LEFT(L$,Z%-1%)="" OR LEFT(L$,Z%-1%)="X" & THEN A(N1%,K%)=H9 & ELSE A(N1%,K%)=VAL(LEFT(L$,Z%-1%)) & \ A(0%,K%)=A(0%,K%)+1 270 L$=RIGHT(L$,Z%+1%) & \ GOTO 290 275 PRINT "TYPE IN MORE VALUES" 278 INPUT LINE L$ & \ L$=LEFT(L$,LEN(L$)-2%)+"," & \ GOTO 265 290 NEXT K% & \ X%=1% & \ PRINT "THE DATA HAS BEEN ADDED TO YOUR MATRIX IN ROW";N1% & \ GOTO 100 299 ! & ! & ! & ! THIS ROUTINE ASKS THE USER WHAT ROW HE WANTS TO DELETE AND THEN SHIFTS & ! ALL ROWS AFTER THAT ROW UP ONE ROW IN THE MATRIX. & ! & ! & 300 INPUT "WHAT ROW NUMBER IS TO BE DELETED";N1% 301 IF R%<>1% GOTO 305 302 PRINT "YOU CANNOT DELETE A ROW. . ." 303 PRINT "YOU ONLY HAVE ONE ROW LEFT" 304 GOTO 100 305 IF N1%>=1% AND N1%<=R% GOTO 310 306 PRINT "THE ROW NUMBER MUST BE BETWEEN 1 AND"; R% 307 PRINT "PLEASE TRY AGAIN" 308 GOTO 300 310 D%=N1% 320 FOR I%=D%+1% TO R% 325 FOR J%=1% TO C% & \ IF A(I%-1%,J%)<>H9 THEN A(0%,J%)=A(0%,J%)-1 327 A(I%-1%,J%)=A(I%,J%) & \ NEXT J% 330 NEXT I% 335 R%=R%-1% 340 PRINT "NEW MATRIX HAS ";R%;" ROWS AND ";C%;" COLUMNS." 342 X%=1% 344 PRINT 345 GOTO 100 349 ! & ! & ! & ! THIS ROUTINE SETS THE PARAMETERS FOR PRINTING THE WHOLE MATRIX. & ! & ! & 350 C8%=1% & \ C9%=C% 365 R1%=1% & \ R2%=R% 370 C1%=1% & \ C2%=C% 375 GOTO 420 399 ! & ! & ! & ! THIS ROUTINE HAS THE USER TYPE IN PARAMETERS NECESSARY FOR PRINTING & ! A SUBMATRIX. & ! & ! & 400 INPUT "TYPE BEGINNING ROW,END ROW ";R1%,R2% 402 IF R1%>=1% AND R2%>=1% AND R1%<=R% AND R2%<=R% GOTO 410 404 PRINT "THE ROW NUMBERS MUST BE BETWEEN 1 AND"; R% 406 PRINT "PLEASE TRY AGAIN" 408 GOTO 400 410 INPUT "TYPE BEGINNING COLUMN,END COLUMN ";C1%,C2% 411 IF C1%>=1 AND C2%>=1 AND C1%<=C% AND C2%<=C% GOTO 415 412 PRINT "COLUMN NUMBERS MUST BE BETWEEN 1 AND"; C% 413 PRINT "PLEASE TRY AGAIN" 414 GOTO 410 415 C9%=C2% & \ C8%=C1% 418 ! & ! & ! & ! THIS ROUTINE IS USED BY THE ABOVE TWO PRINT ROUTINES TO ACTUALLY & ! PRINT OUT ON THE KEYBOARD THE FULL MATRIX OR A SUBMATRIX. 419 ! LINES 420, 540, AND 550 CAUSE THE TABLE TO BE PRINTED IN TWO OR THREE & ! PARTS IF THERE ARE MORE THAN 6 COLUMNS. & ! & ! & 420 IF (C9%-C8%)>5% THEN C9%=C8%+5% 430 PRINT & \ PRINT "ROW";TAB(37%);"COLUMN" & \ PRINT 431 I%=10% 432 FOR K%=C8% TO C9% 433 PRINT TAB(I%);K%; 434 I%=I%+11% 435 NEXT K% 439 PRINT 440 FOR I%=R1% TO R2% 450 PRINT I%;TAB(5%); 470 FOR J%=C8% TO C9% 475 IF A(I%,J%)=H9 THEN PRINT SPACE$(11%); & \ GOTO 500 480 PRINT USING " #####.####",A(I%,J%); 500 NEXT J% 510 PRINT 520 NEXT I% 530 PRINT & \ PRINT 540 IF C2%=C9% GOTO 100 550 C8%=C9%+1% & \ C9%=C2% 560 GOTO 420 598 ! & ! & ! & ! THIS ROUTINE STORES THE CURRENT DATA MATRIX IN THE USER'S SPECIFIED & ! OUTPUT FILE. NOTE THAT IF HE HAD PREVIOUSLY SPECIFIED THE KEYBOARD & ! ("*" = "TI:") AS THE OUTPUT FILE, HE IS ALLOWED TO SPECIFY A NEW & ! OUTPUT FILE NAME. & ! & ! & 600 F2$=MID(F$,16%,15%) 601 IF F2$="TI:" THEN PRINT "STAT11 CANNOT SAVE YOUR DATA ON THE KEYBOARD" & \ S8%=1% & \ GOTO 935 605 ON ERROR GOTO 900 610 OPEN F2$ AS FILE 2, VIRTUAL 615 ON ERROR GOTO 994 650 DIM #2,C(250%,15%) 660 FOR J%=1% TO R% 670 FOR K%=1% TO C% 680 C(J%,K%)=A(J%,K%) 690 NEXT K% 700 NEXT J% 702 C(0%,0%)=R% 704 C(1%,0%)=C% 710 CLOSE 2 720 PRINT "OUTPUT FILE ";F2$;" CREATED AS A VIRTUAL MATRIX WITH " 725 PRINT "DIMENSION OF";R%;" BY";C% & \ PRINT 730 GOTO 100 750 FOR J%=1% TO R% 760 FOR K%=1% TO C% 770 PRINT #2,A(J%,K%) 775 NEXT K% 780 NEXT J% 790 PRINT #2,CHR$(26) 795 CLOSE 2 800 GOTO 100 809 ! & ! & ! & ! THIS ROUTINE ASKS THE USER WHICH COLUMN HE WANTS TO DELETE AND THEN & ! SHIFTS ALL THE FOLLOWING COLUMNS OVER ONE TO CLOSE UP THE GAP. & ! & ! & 810 INPUT "WHICH COLUMN DO YOU WANT TO DELETE "; N1% 811 IF C%<>1% GOTO 815 812 PRINT "YOU CANNOT DELETE A COLUMN. . ." 813 PRINT "YOU ONLY HAVE ONE COLUMN LEFT" 814 GOTO 100 815 IF N1%>=1% AND N1%<=C% GOTO 820 816 PRINT "COLUMN NUMBER MUST BE BETWEEN 1 AND"; C% 817 PRINT "PLEASE TRY AGAIN" 818 GOTO 810 820 FOR K%=1% TO R% 830 A(K%,J%)=A(K%,J%+1%) FOR J%=N1% TO C%-1% 835 NEXT K% 840 C%=C%-1% 844 X%=1% 846 PRINT 848 GOTO 100 849 ! & ! & ! & ! HERE THE USER TYPES IN DATA POINTS AND THEY ARE ADDED TO THE MATRIX & ! IN THE FORM OF A NEW COLUMN. & ! & ! & 850 C1%=C%+1% & \ IF C1%>15% GOTO 890 851 PRINT "TYPE";R%;" NUMBERS ANY AMOUNT PER LINE" & \ PRINT "SEPERATE NUMBERS WITH A COMMA, BUT DO NOT END A LINE"; & "WITH A COMMA" & \ PRINT "IF YOU HAVE A VALUE MISSING, TYPE AN 'X' WHERE IT WOULD"; & " NORMALLY OCCUR" 852 A(0%,C1%)=0% 854 INPUT LINE L$ 856 L$=LEFT(L$,LEN(L$)-2)+"," 858 FOR K%=1% TO R% 860 Z%=INSTR(1%,L$,",") 862 IF Z%=0 GOTO 870 864 IF LEFT(L$,Z%-1%)="" OR LEFT(L$,Z%-1%)="X" & THEN A(K%,C1%)=H9 & ELSE A(K%,C1%)=VAL(LEFT(L$,Z%-1%)) & \ A(0%,C1%)=A(0%,C1%)+1 866 L$=RIGHT(L$,Z%+1%) 868 GOTO 876 870 PRINT "TYPE IN MORE VALUES" 871 INPUT LINE L$ 872 L$=LEFT(L$,LEN(L$)-2%)+"," 874 GOTO 860 876 NEXT K% 877 IF A(0%,C1%)=0 & THEN PRINT "ALL OF THE POINTS THAT YOU TYPED"; & "WERE BLANK" & \ PRINT "NO COLUMN IS ADDED" & \ GOTO 100 878 PRINT "THE NEW DATA HAS BEEN ADDED TO YOUR MATRIX IN COLUMN";C1% 880 C%=C%+1% 881 X%=1% 882 GOTO 100 890 PRINT "YOU CANNOT ADD ANOTHER VARIABLE" 894 PRINT "YOUR DATA MATRIX ALREADY CONTAINS" 896 PRINT "THE MAXIMUM 15 COLUMNS OF DATA" 898 GOTO 100 899 ! & ! & ! & ! THESE ARE VARIOUS ERROR ROUTINES REFERENCED BY THE ABOVE ROUTINES & ! TO HANDLE NON-NUMERIC INPUT FROM THE KEYBOARD AND MISSING FILE NAMES. & ! & ! & 900 IF ERR=28% THEN GOSUB 10000 & \ X%=1% & !\ RESUME 95 & \ MODULE$ = "FINISH" & \ GOTO 32750 905 PRINT "STAT11 IS UNABLE TO OPEN "; F2$; " AS AN OUTPUT FILE" 910 PRINT "DO YOU WISH TO TRY AGAIN" 911 INPUT "TO SAVE DATA IN AN OUTPUT FILE"; W$ 915 IF W$="NO" OR LEFT(W$,1%)="N" OR W$="" GOTO 970 918 IF W$="YES" OR LEFT(W$,1%)="Y" GOTO 935 920 PRINT "YOU MUST TYPE EITHER YES OR NO" 930 GOTO 910 935 INPUT "PLEASE TYPE IN A NEW OUTPUT FILE NAME";F2$ & \ PRINT 940 L$=LEFT(F$,15%) & \ R$=RIGHT(F$,31%) 950 F$=L$+LEFT(F2$+SPACE$(15%),15%)+R$ 955 IF S8%=1% THEN S8%=0% & \ GOTO 605 960 RESUME 610 970 RESUME 100 975 IF ERR=28% THEN GOSUB 10000 & \ X%=1% & !\ RESUME 95 & \ MODULE$ = "FINISH" & \ GOTO 32750 977 PRINT "PLEASE TYPE ONLY NUMBERS WHEN NUMBERS ARE ASKED FOR " 980 PRINT "WHEN TWO OR MORE NUMBERS ARE REQUESTED, SEPARATE" 985 PRINT "THEM WITH COMMAS" & \ PRINT 987 IF ERL=162 THEN RESUME 160 989 IF C9%=2% OR C9%=3% OR C9%=9% & THEN PRINT "THE FIRST";K%;" VALUES HAVE BEEN SUCCESSFULLY PUT INTO YOUR MATRIX" 990 IF C9%=2% OR C9%=3% THEN RESUME 275 ELSE IF C9%=9% THEN RESUME 870 & ELSE RESUME 140 994 IF ERR=28% THEN GOSUB 10000 & \ X%=1% & !\ RESUME 95% & \ MODULE$ = "FINISH" & \ GOTO 32750 996 ON ERROR GOTO 0 999 ! & ! & ! & ! THIS IS THE HELP ROUTINE THAT PRINTS A LIST OF THE EDIT OPTIONS WHEN & ! THE USER TYPES HELP INSTEAD OF AN EDIT OPTION NUMBER. & ! & ! & 1000 PRINT & \ PRINT "THE FOLLOWING CODES SIGNIFY THE EDIT OPTIONS " 1020 PRINT " 1 - REPLACE AN INDIVIDUAL VALUE " 1030 PRINT " 2 - REPLACE AN ENTIRE ROW " 1040 PRINT " 3 - ADD A ROW " 1050 PRINT " 4 - DELETE A ROW " 1060 PRINT " 5 - PRINT ENTIRE MATRIX " 1070 PRINT " 6 - PRINT SUBMATRIX " 1080 PRINT " 7 - SAVE DATA " 1085 PRINT " 8 - DELETE A COLUMN" 1087 PRINT " 9 - ADD A COLUMN" 1090 PRINT " 0 - NO MORE EDIT " 1100 GOTO 100 1999 ! & ! & ! & ! HERE, AFTER CLOSING THE DATA FILE, A$ IS CHECKED TO SEE IF THE & ! NEXT ANALYSIS IS TO BE EDIT. IF SO, THEN STATCM IS SUBSTITUTED SINCE & ! EDIT00 IS JUST NOW BEING EXECUTED AND THERE IS NO NEED TO EXECUTE IT & ! AGAIN IMMEDIATELY. & ! & ! & 2000 A(1%,0%)=C% & \ CLOSE 1 2005 A$=MID(F$,56%,20%) 2008 IF LEFT(A$,6%)="EDIT00" THEN A$="STATCM"+A9$+" " 2009 ! & ! & ! & ! HERE THE RETURNING ARGUMENTS ARE STORED IF F$, WHICH WILL BE LOADED & ! INTO COMMON. & ! & ! & 2010 F$=LEFT(F$,45%) 2020 R$="00000"+RIGHT(NUM$(R%),2%) 2030 C$="00000"+RIGHT(NUM$(C%),2%) 2040 F$=F$+MID(R$,LEN(R$)-5%,5%) 2050 F$=F$+MID(C$,LEN(C$)-5%,5%) 2052 ! & ! & ! & ! HERE CONTROL IS TRANSFERRED TO ESCRWM IF X% INDICATES THAT THE & ! ELEMENTARY STATISTICS NEED TO BE RECOMPUTED. OTHERWISE, CONTROL IS & ! TRANSFERRED TO THE MODULE NAMED BY A$. & ! & ! & 2053 IF X%=0% GOTO 2070 2055 F$=F$+A$ 2060 !R$=SYS(CHR$(8)+F$) & \ SAV.F$ = F$ 2067 !CHAIN "ESCRWM"+A9$ & \ MODULE$= "ESCRWM" & \ LINE% = 0% & \ SUBEXIT & 2070 F$=LEFT(F$,55%)+"STATCM"+A9$+" " 2075 !R$=SYS(CHR$(8)+F$) & \ SAV.F$ = F$ 2080 !CHAIN A$ & \ MODULE$= A$ & \ LINE% = 0% & \ SUBEXIT & 10000 V0%=CTRLC ! SYS(CHR$(6%)+CHR$(-7%)) & \ RETURN ! CTRL/C TRAP 32750 SUBEND